首页
关于
README
Search
1
如何配置终端现代化Neovim
629 阅读
2
mdk3工具使用
463 阅读
3
关于C语言
463 阅读
4
Windows11pro 下载体验
445 阅读
5
关于Docker容器--0×01
375 阅读
默认分类
网络技术
渗透测试
编程语言
C语言
Python
Linux
搞机技巧
Termux
golang
数学
Search
标签搜索
printf
mach
sin cos tan
Toanle
累计撰写
40
篇文章
累计收到
1
条评论
首页
栏目
默认分类
网络技术
渗透测试
编程语言
C语言
Python
Linux
搞机技巧
Termux
golang
数学
页面
关于
README
搜索到
9
篇与
Linux
的结果
2024-04-07
使用 systemd
此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。以下是具体的操作步骤:1.安装 systemd如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:# 使用 yum 安装 systemd(CentOS/RHEL) yum install systemd # 使用 apt 安装 systemd(Debian/Ubuntu) apt install systemd 2.创建 frps.service 文件使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。 sudo vim /etc/systemd/system/frps.service写入内容[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target 3.使用 systemd 命令管理 frps 服务# 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps 4.设置 frps 开机自启动sudo systemctl enable frps 通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。
2024年04月07日
55 阅读
0 评论
2 点赞
2023-08-04
如何修改Linux 为设置北京时间
在 Linux 中设置北京时间,需要先设置系统的时区为 Asia/Shanghai,然后将系统时钟设置为当前时间。 以下是具体的步骤:首先,查看当前系统的时区设置:$ timedatectl如果时区设置不正确,可以使用 timedatectl 命令来修改。例如,将时区设置为 Asia/Shanghai:$ sudo timedatectl set-timezone Asia/Shanghai然后,查看当前系统时钟的时间:$ date如果时间不正确,可以使用 date 命令来修改。例如,将系统时钟设置为当前时间:$ sudo date -s "2022-01-01 12:00:00"其中,“2022-01-01 12:00:00” 是当前时间的日期和时间。请根据实际情况修改。最后,将系统时钟同步到硬件时钟:$ sudo hwclock --systohc这个命令会将当前系统时钟的时间同步到硬件时钟中,以便下次系统启动时恢复到正确的时间。通过以上步骤,就可以将 Linux 系统的时间设置为北京时间了。
2023年08月04日
18 阅读
1 评论
0 点赞
2023-06-19
在Linux上使用I2c
什么是I2c? 在“Inter-Integrated Circuit” 中,“Inter-” 表示“在……之间,相互”的意思;“Integrated Circuit” 简称“IC”,表示“集成电路”的意思。 “Inter-Integrated Circuit”,直接翻译过来就是内部集成电路(DeepL翻译为互联电路,微软翻译为内部集成电路,百度翻译为内置集成电路)。德力威尔王术平认为,应该把“Inter-Integrated Circuit”翻译为集成电路互连或者芯片互连,更符合国人习惯,更为贴切。在中国正式的书面场合,全称写作Inter-Integrated Circuit,简写Inter-IC或者I2C(数字“2”书写为上标,,英文读作“I squared C”,中文读作“I平方C”)。在非正式场合或者数字“2”无法书写为上标时,有人就书写为“IIC”或者“I2C”,把“IIC”读作“I-I-C”,把“I2C”读作“I-two-C”或“I二C”。这些书写方式或叫法,其实没有对错,只是不同习惯而已,就像普通话和地方话一样。但是,我们在严谨的正式场合,还是要统一标准,规范书写为“I2C”(数字“2”书写为上标),规范读作“I平方C”。在本文中,德力威尔王术平对相关术语的中文解释做出如下约定:I2C:读作“I平方C”(尽量不读作“I方C”,避免和I3C混淆)。I2C:集成电路互连。I2C Bus:I2C总线或集成电路互连总线。I2C Specification:I2C规范或集成电路互连规范。I2C Communication Interface:I2C通信接口或集成电路互连通信接口。I2C Communication Protocol:I2C通信协议或集成电路互连通信协议。I2C:在无法书写上标数字“2”时,可书写为“IIC”或“I2C”。计算机中Bus术语的定义在计算体系结构中, 总线(Bus)是计算机内部组件之间或计算机之间传送信息的公共通信干线,它是由导线组成的传输路径。总线(Bus)是一种电路,它是cpu、RAM、ROM、输入、输出等设备传递信息的公用通道,充当数据在计算机内传输的高速公路按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据信息、地址信息和控制信号。首先,我们需要安装工具包。sudo apt install i2c-toolsi2c-tools是一个用于 Linux 与 软件/硬件 I2C 总线通信的实用工具集,其中包括了查看和修改 I2C 总线设备信息的工具。以下是一些常见的使用示例:列出I2C总线上的设备:sudo i2cdetect -y 1这将会显示以16进制格式列出I2C总线地址范围内所有已经探测到的设备。其中,第一个参数-y表示以非交互模式运行,第二个参数1表示使用1号I2C总线(对于一些系统可能是2号I2C总线)。这个命令可以帮助我们快速看到哪些设备设备与I2C总线通信连接,以及它们的I2C地址。读写设备寄存器:sudo i2cget -y 1 0x48 0x00这个命令表示从I2C地址为0x48的设备中读取寄存器地址为0x00的寄存器的值。如果想要写入一个新的值,我们可以用i2cset命令,例 如:sudo i2cset -y 1 0x48 0x00 0x10这个命令表示往I2C地址为0x48的设备中写入寄存器地址为0x00的寄存器的值为0x10。使用i2cdump命令读取设备的寄存器:sudo i2cdump -y 1 0x48如果我们想要快速查看一个设备的所有寄存器的值,我们可以使用i2cdump命令。这个命令表示从I2C地址为0x48的设备中读取所有的寄存器的值(通常有16个)。编写自定义的I2C工具:除了常用的i2cget和i2cset命令之外,我们还可以使用i2c-tools提供的APIs创建自定义的I2C工具。例如,下面是一个简单的C程序,通 过I2C通信从 EEPROM (I2C地址为0x57) 中读取两个字节的数据:#include <fcntl.h> #include <unistd.h> #include <linux/i2c-dev.h> // for I2C_SLAVE macro #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv){ int fd; if ((fd = open("/dev/i2c-1", O_RDWR)) < 0){ // open I2C bus perror("open"); exit(1); } if (ioctl(fd, I2C_SLAVE, 0x57) < 0){ // select EEPROM device perror("ioctl"); exit(1); } char buffer[2]; int ret; if ((ret = read(fd, buffer, 2)) != 2){ // read 2 bytes from memory address 0x00 perror("read"); exit(1); } printf("Read: %#02x %#02x\n", buffer[0], buffer[1]); close(fd); return 0; }以上就是i2c-tools常用的几个使用示例,我们可以根据自己的需求修改。package main import ( "fmt" "log" "time" "golang.org/x/exp/io/i2c" ) func main() { // 打开I2C总线 bus, err := i2c.Open(&i2c.Devfs{Dev: "/dev/i2c-1"}, 0x57) if err != nil { log.Fatal(err) } defer bus.Close() // 模拟I2C设备地址为0x00,读取2字节数据 buffer := make([]byte, 2) if err := bus.ReadRegBytes(0x00, buffer); err != nil { log.Fatal(err) } fmt.Printf("Read: %#02x %#02x\n", buffer[0], buffer[1]) time.Sleep(time.Second) }这个程序使用了golang.org/x/exp/io/i2c包来打开I2C总线并创建I2C设备。我们可以通过调整0x57参数来改变设备的I2C地址。代码中的ReadRegBytes()方法可以使我们直接从指定设备的指定寄存器中读取数据。这个程序会读取从0x00寄存器中读取2字节的数据并在控制台 中输出。最后,代码中的time.Sleep()函数用于防止Go程序在数据读取完成后立刻退出。
2023年06月19日
67 阅读
0 评论
0 点赞
2023-02-03
在Linux系统下批量压缩图片
第一步:安装支持处理文件类型:JPG、JPEGsudo apt install jpegoptim支持处理文件类型:PNG, BMP, GIF, PNM or TIFF,这个优化效率太低了,速度奇慢无比sudo apt install optipng其中2款工具的具体使用参数如下JPEGOPTIM 名称 jpegoptim - 用于优化/压缩JPEG/JFIF文件。 概要 jpegoptim [ options ] [ filenames ] 描述 pegoptim用于优化/压缩jpeg文件。项目支持无损优化,这是基于对Huffman表的优化。所谓的“有损”优化除了优化之外。可以指定图像质量的上限。 选项 选项可以是传统的POSIX一个字母选项,也可以是。GNU风格长选项。 POSIX风格选项以一个“-”开头,而GNU的长选项以''--'开头。 jpegoptim提供的选项如下: -d<path>, --dest=<path> //设置备选目标目录,以便保存优化。文件(默认是覆盖原始文件)。 //请注意,不变的文件不会被添加到目标目录。 //这意味着如果源文件不能被压缩,就不会有文件。在目标路径中创建。 -f, --force //强制优化,即使结果大于。原始文件。 -h, --help //显示简短的使用信息并退出。 -m<quality>, --max=<quality> //设置最大图像质量因子(禁用无损优化)。mization模式是默认启用的。 //设置这个选项会降低使用更高版本保存的源文件的质量。而那些已经有较低质量的文件。设置将使用无损优化进行压缩。 -n, --noaction //不要真的优化文件,只需打印结果。 -S<size>, --size=<size> //尝试优化文件大小(禁用了无损优化mizaiont模式)。目标尺寸指定KB(1 N)或百分比(1% - 99%)的原始文件的大小。 -T<treshold>, --threshold=<treshold> //如果压缩增益低于阈值(%),则保持文件不变。传输安全有效值为:0 - 100 -o, --overwrite //覆盖目标文件,即使它存在(使用D选项)。 -p, --preserve //保存文件修改时间。 -q, --quiet //安静模式。 -t, --totals //处理完所有文件后打印总计。 -v, --verbose //启用详细模式(积极聊天). --all-normal //强制所有输出文件为非逐行扫描。可以用来转换所有输入文件的渐进式JPEG当使用--force选项。 --all-progressive //强制所有输出文件都是渐进的。可以将所有输入文件正常(非连续)当使用--force选项的JPEG文件。 --strip-all //去除所有(Comment & Exif)从输出文件删除标记。(注!默认情况下只有Comment & Exif标记保存,其他一切都是丢弃) --strip-com //从输出文件中删除Comment(COM)标记。 --strip-exif //从输出文件中删除标记。 --strip-iptc //从输出文件中删除IPTC标记。 --strip-icc //将ICC配置文件从输出文件中删除。 Bugs: 当使用size选项时,结果文件并不总是精确的请求大小。解决方法是重新运行jpegoptim在同一文件又往往会导致文件大小接近目标。OPTIPNG命令手册 NAME OptiPNG−优化便携式网络图形文件 SYNOPSIS optipng [−? | −h | −help] optipng [options...] files... DESCRIPTION OptiPNG程序将尝试优化PNG文件,即将其大小减小到最小值。失去语义信息。此外,该程序还应执行一套辅助功能。完整性检查、元数据恢复和pixmapto - png转换。 优化尝试不能保证成功。有效的PNG文件不能被这个程序优化,通常是原封不动的,它们的大小不会增长。用户可以请求重写此默认行为。 FILES 输入文件是用PNG格式(本机格式)或外部格式编码的光栅图像文件。当前支持的外部格式是GIF、BMP、PNM和TIFF。 OptiPNG处理命令行中给出的每个图像文件如下: −如果是PNG格式的图像: 试图优化给定文件的位置。如果优化是成功的,或者选择−力被激活,其优化的版本替换原来的文件。原始文件备份,如果选择−保持启用。 −如果图像是一个外部格式: 创建给定文件的优化PNG版本。输出文件名由原始文件名和PNG扩展名组成。 现有的文件不会被覆盖,除非该选项启用−clobber OPTIONS 通用选项 −?, −h, −help //显示选项的完整摘要。 −backup, −keep //对修改后的文件进行备份。 −clobber //覆盖现有的输出和备份文件。在这个选项,如果选择−backup 未启用,覆盖旧的备份文件的删除。 −dir directory //将输出文件写入目录。 −fix //启用错误恢复。此选项对有效的输入文件没有影响。 //程序将花费大量的精力在不增加输出文件大小的情况下尽可能地恢复尽可能多的数据,但不能保证成功。该程序可能会增加文件的大小,例如,重建丢失的关键数据。在此选项下,完整性应优先于文件大小。 //当此选项未被使用时,无效的输入文件将被未处理。 −force //强制编写新的输出文件。 //此选项覆盖程序的决定不写这样的文件,例如当PNG输入数字签名(使用dsig),或当PNG输出变得大于PNG输入。 −log file //将消息记录到文件。出于安全原因,文件必须有扩展名。此选项已被废弃,最终将被删除。使用shell重定向。 −out file //将输出文件写入文件。命令行必须只包含一个输入文件。 −preserve //保存(文件属性的文件访问时间邮票,在人权等)适用。 −quiet, −silent // 在安静的运行模式。 −simulate //运行模拟模式:执行测试,但不创建输出文件。 −v //启用该选项 −verbose and −version. −verbose //在详细模式运行。 −version //显示版权,版本和建立信息。 −− //选择开关停止解析。 PNG编码和优化选项。 −o level //选择优化级别 //优化level0enables一组优化操作,需要最少的努力。将不会有任何变化的图像的属性一样,比特深度或颜色的类型,并没有再压缩现有IDAT数据流。 //优化level1enables单IDAT压缩试验。试验选择的是什么,OptiPNG认为这可能是最有效的。 //优化level2和更高的使多个IDAT压缩试验;此选项的行为和默认值可能会在不同的程序版本中发生更改。使用选项−H看到有关您的特定版本。 −f filters //选择PNG增量过滤器。 //过滤器的参数被指定为一个rangeset(例如−F0−5),和默认的过滤器值取决于设置的选项−O.优化水平过滤器的值0, 1, 2,3和4显示静态滤波,和对应的标准PNG过滤代码(无,左,上,平均和Paeth,分别)。滤波值5表明自适应滤波,其作用是通过libpng的定义(3)用optipng。 −full //制作一份关于IDAT的完整报告。这种选择可能会减缓试验的速度。 −i type //选择交错类型(0−1)。 //如果交错式0被选择,输出图像应非隔行扫描(即progressivescanned)。如果交错式1被选择,输出图像应交错使用adam7方法。默认情况下,输出应具有相同的类型作为输入接口。 −nb //不要应用位深度还原。 −nc //不要使用颜色类型还原。 −np //不应用调色板还原。 −nx //不适用任何无损图像还原:启用选项−nb,-nc控和−−np。 −nz //不记录IDAT数据流 −zc levels //选择IDAT压缩中使用的zlib压缩级别。 −zm levels //选择IDAT压缩中使用的zlib内存级别。 −zs strategies //选择在IDAT压缩中使用的zlib压缩策略。 −zw size //选择zlib窗口大小(32 k,16 k、8 k、4 k,2 k,1 k,512256)中使用IDAT压缩。 Editing options −snip //从多图像、动画或视频文件中删除一个图像。 −strip objects //从PNG文件中删除元数据对象。首先我们把手机连接电脑上,找到图片目录,进行操作。# 查询大于2M的图片文件 # 查询总数量 :215535个文件 find -type f -size +2M -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)" | wc -l # 文件大小统计,这个统计 find -type f -size +2M -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)" | xargs du -ach # 上面文件大小统计的命令不太准确,后面因统计不太准确,所以找到了以下的命令,可以直接计算出文件的大小、文件的数量 # 查询大于2M 的所有图片数量与文件大小 # 总数量:339586个 # 总大小:1068.79G # 平均大小:3.2M find . -size +2048 -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)" -exec ls -l {} \; |awk 'BEGIN{count=0;size=0;} \ {count = count + 1; size = size + $5/1024/1024;} \ END{print "Total count " count; \ print "Total Size " size/1024 " GB" ; \ print "Avg Size " size / count "MB"; \ print "—"}'压缩1、首先对jpg、jpeg格式的图片进行压缩测试# 对2M以上文件进行压缩,压缩品质为60,-p为保留原文件修改时间,-t为压缩完成后统计输出压缩率 find . -size +2048 -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\)" | xargs jpegoptim -m60 -p -t 以上操作会在原文件基础上进行压缩覆盖,并且保留原文件修改时间,不会覆盖为新的时间,如果有需要是要将压缩后的文件放到新的文件夹中,原文件保留的话可以使用以下命令# 文件压缩后会输出到new 文件夹,注意需要手动先新建文件夹 find . -size +2048 -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\)" | xargs jpegoptim -m60 -p -t -d new 经压缩测试总空间为59G的文件夹(包含不符合压缩条件的文件共计),压缩时间约2小时左右,共释放内存29G,压缩率为74% 左右,其中以1022G为基准进行压缩,具体压缩品质与压缩率对照如下。2、对png格式进行压缩默认压缩如下,其他参数如上述参数描述,可以视情况进行增加find -name '*.png' | xargs optipng经测试,这个压缩速度极慢无比,不知道是不是我使用方法不当,而且压缩率很低,一个10861KB的png图片,压缩之后为10858KB。有人说是因为optipng会对比各种优化方案,选择最优的方案所以比较慢。鉴于此,且系统中的png图片占相对比较小相对于jpg的1个T左右,总共9个G,故此次不对png图片进行压缩。3、如果有需要,压缩png图片的话,可以使用ImageMagick 使用这个包,然后使用以下命令进行压缩,压缩率较高,可以压缩任意格式的图片,但是速度相对于jpegoptim有点慢# ImageMagick sudo install ImageMagick # png格式的图片压缩使用optimpng 压缩效率太低了 ,使用ImageMagick测试可行,但是效率一般,150M大小10个文件左右需要35秒左右,不过可以压缩大文件,且不区分文件类型都可以压缩, 如100M以上的jpg、png都可以文件 find ./ -regex '.*\(png\|PNG\)' -size +2M -exec convert -quality 60 {} {} \;注意测试过程中发现有几点问题需要注意的,此处做一个汇总1、尽量使用root账号进行压缩,否则原拥有者为root,使用其他账号压缩之后会变更为登录账号,且压缩过程中输出详情信息会提示错误,就是因为无法变更拥有者为root,不过文件可以正常压缩。2、压缩之前尽量先对文件进行备份,避免出现意向不到的问题3、测试过程中,曾经对一个119M的jpg文件进行压缩,但是却报错了,开始以为是jpegoptim对于太大的文件压缩不支持,后续使用参数-v, --verbose //启用详细模式(积极聊天)发现错误信息为,提示:Not a JPEG file: starts with 0x89 0x50,由此可以发现,这个jpg文件为假的jpg,有可能是该文件上传之前为png或者其他格式,经过手动修改变成了jpg格式,所以造成无法处理,针对此类文件只能进行单独处理了,比如使用上述的ImageMagick进行压缩,可以将119M的文件压缩至7M左右。总结因为本身对于Linux系统不太熟悉,所以在实际过程中还是走了不少的弯路的,还在最终提供了完整的解决方案,记录学习。后续实际操作过程中发现,使用jpegoptim 后台执行,中间不知道为中断了,而且可能是系统之前对上传的图片进行了重命名,所以造成了大量图片无法进行压缩,报错信息为:Not a JPEG file: starts with 0x89 0x50,综合考虑,切换方案,使用ImageMagick后台执行,为避免报错还要加上这个>/dev/null 2>/dev/null,否则会报nohup: ignoring input and appending output to ‘nohup.out’nohup find ./ -regex '.*\(jpg\|jpeg\|JPG\|JPEG\)' -size +2M -exec convert -quality 60 {} {} \; >/dev/null 2>/dev/null &最终压缩内存800G左右,耗时18小时左右,之前压缩测试时这个ImageMagick速度不快,没想到实操过程中速度可观,且压缩品质也不错。如何使用 FFmpeg 减少视频大小视频压缩sudo ffmpeg -i 3.mp4 -vcodec libx265 -crf 25 33.mp4没有通用的方法来减小视频文件的大小,因为各种文件类型的创建并不相同。在本教程中,我们将使用 x265 编解码器。x265 编解码器,它是一个免费的库,用于视频编码为 H.254/MPEG-H HEVC 的压缩格式。CRF使用 0 到 51 之间的数字。恒定速率因子(CRF)是 x264 和 x265 编码的默认质量设置。值越高,压缩率越高,值越高这可能会导致质量损失。————————————————版权声明:本文为CSDN博主「ao123056」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/ao123056/article/details/123479736
2023年02月03日
297 阅读
0 评论
0 点赞
2023-01-20
debian及其发行版操作系统开机自启实现
操作系统:Debian GNU/Linux 10二、方法1:~/.bashrc可以添加脚本在 ~/.bashrc末尾执行 #!/bin/sh #/etc/init.d/myStart ### BEGIN INIT INFO # Provides: myStart//启动脚本名 # Required-Start: $local_fs $syslog $network # Required-Stop: $local_fs $syslog $network # Default-Start: 2 3 4 5 //启动级别 # Default-Stop: 0 1 6 # Short-Description: myStart startup # Description: myStart auto startup 1.0 ### END INIT INFO 下面就可以写你的启动脚本或命令了 下面是启动级别含义。0 - 停机(千万不能把initdefault 设置为0 )1 - 单用户模式 进入方法#init s = init 12 - 多用户,没有 NFS3 - 完全多用户模式(标准的运行级)4 - 没有用到5 - X11 多用户图形模式(xwindow)6 - 重新启动 (千万不要把initdefault 设置为6 )sudo update-rc.d ariang defaults 如果要卸载随机启动的服务,执行sudo update-rc.d -f ariang removeupdate-rc.d后面有三个参数,分别是/etc/init.d下的脚本名字,这里我们以默认安装方式,运行的优先级。优先级的数字越大,表示越迟运行,这里我们把自己写的服务放在最后运行。如果在update-rc.d安装的时候提示了警告信息,是因为我们写的/etc/init.d/ariang太简陋了,只包含了我们想要的命令,连LSB的信息也没有提供。最后我们别忘了给脚本执行权限。754
2023年01月20日
87 阅读
0 评论
0 点赞
1
2