- 博客(39)
- 收藏
- 关注
原创 shell错误修改
在Shell脚本中,使用 read 命令读取输入时,如果不带 -r 选项,反斜杠(\)会被特别处理,可能导致输入数据的“损坏”或意外修改。一致的局部作用域:对每个变量使用 local,确保它们不会与任何全局变量冲突。分开声明和赋值:先声明变量,然后赋值,以防止掩盖。检查ffmpeg和ffprobe命令是否已安装。
2024-10-13 22:22:14
412
原创 脚本增加选项,解决问题
为了防止原始文件小于指定文件块大小,分割数量是0,默认数量+1, 导致分割文件数量不是最优,修改为通过可以判断指定大小和文件大小,执行分割。原因是拼接的输出文件后缀为(1),文件系统会默认在文件名外层加上引号,将后缀改为_1的形式,能够正常分割。给脚本添加选项,可以选择以GB,MB甚至B为单位来分割视频(限制最小分割大小是1MB)去除ffmpeg的执行信息。切分文件数量不是最少数量。切分的视频文件名带引号。实现指定分割文件块大小。
2024-10-11 00:31:05
266
原创 视频切分成指定大小片段
某些时候,由于上传限制,我们可能想把视频切分成尽量少且满足大小限制的片段,不改变视频原先的格式。获取视频的总时长(单位秒)代码出现问题,显示语法错误。获取视频的大小(字节B)输出文件夹使用文件名。
2024-10-10 00:27:24
542
2
原创 整理并通过md5删除重复文件
删除重复文件:由于文件名相同的文件不一定是重复文件,根据md5值判断文件是否重复比较稳妥。将文件分类和去除重复功能封装成函数。
2024-10-07 23:16:57
414
原创 Linux三剑客对数据处理
然而此时找出的数据,仍然是整行为单位,我们想把姓名,年龄,职业区分开或者对他们做什么处理时,grep就不够用了;这时候我们可以使用awk。想要查找某条数据,或者符合条件的数据可以使用grep+正则,找出符合条件的行。但是有些时候我们不仅仅需要找出数据,还需要按照一定的规则进行整合,格式化排列。主要用来自动编辑一个或多个文件;简化对文件的反复操作;组合:找出文件中大于25岁的人,将他们的信息格式化显示。grep配合正则表达式可以灵活的查找文本内容。
2024-09-28 21:39:01
322
原创 shell用文件管理备份文件路径
虽然有些问题,但是根据文件内备份路径, 成功备份文件。利用>可将内容复写到目标文件,覆盖原内容。从文件中读取文件路径。
2024-09-26 23:34:08
216
原创 shell定时备份文件
在 Linux 系统中,定时任务通常使用 cron 工具设置。cron 可以让你定期执行脚本或命令,支持分钟、小时、天、月份及星期的定时设置。上述脚本写死了备份文件路径,可以修改为从txt文本中读取需要备份的路径,结合函数,再写个管理备份路径的shell。编写定时备份文件脚本,在执行结束后将完成信息写入指定log文件。crontab任务,00代表每天0点0分执行。可以根据此设计备份脚本,每天定时备份文件。使用crontab添加定时任务。
2024-09-25 23:49:32
303
原创 shell函数,调用及变量导出
除非通过 export,可以将父脚本中的变量设置为环境变量,使其在调用的子脚本中可用。可以在shell脚本中调用其他shell脚本,也可以调用自身,前提是设置好种植条件。在调用其他shell脚本时,被调用的shell脚本不能使用夫脚本的变量,在函数内部,可以通过 $1, $2, …来访问传递给函数的参数。# 表示参数的个数,$@ 和 $* 用于获取所有参数。shell脚本调用可以一个shell脚本使用不同的功能。代表脚本本身的名称,
2024-09-24 23:25:12
195
原创 find和grep查找
使用管道符|过滤grep查找的内容,发现grep瞬间就扫描了整本小说,速度非常快。grep 文本搜索工具,它能使用正则表达式搜索文本,用于过滤/搜索的特定字符。从文件中搜索包含字符串 “” 的所有行,并将这些行输出到终端。unzip可以解压zip文件,head可以指定显示文件的前n行。find 命令是强大且灵活的命令,用于查找文件和目录。gunzip不能解压zip文件,用于解压.gz文件。在指定目录查找所有名字包含jpg的文件和文件夹。
2024-09-23 23:28:02
259
原创 linux文件下载分类
在下载图片时各个网站命名不统一,管理起来很麻烦,想要写一个脚本将下载的图片或者其他资源实现格式统一,方便管理。如果使用mv命令往文件夹内放相同名字文件后者会把前者覆盖掉,这意味着同一秒下载的多个文件只会留下一个?与wget结合,接收资源链接,下载文件并重命名。脚本: 将文件命名为现在时间+原后缀。将重命名后的文件放入对应名称的文件夹。
2024-09-21 20:50:07
181
原创 linux基础
Linux并不要求可执行文件或脚本文件具有特殊的文件名或扩展名。whereis - 定位二进制、源和手册页文件的位置。gunzip - 解压 gzip 压缩的文件。touch - 创建空文件或更新文件时间戳。chown - 改变文件或目录的所有者。chmod - 改变文件或目录的权限。pwd - 显示当前工作目录的路径。find - 搜索文件系统中的文件。chgrp - 改变文件或目录的组。unzip - 解压 zip 文件。mv - 移动或重命名文件或目录。head - 显示文件的前几行。
2024-09-20 00:03:49
397
原创 gen_server整理
{local, Name}: 将服务器注册为一个本地名称,可以通过这个名称在当前节点上被引用。例如,{local, my_server} 会将服务器注册为 my_server。当gen_server:start_link/3或gen_server:start/3被调用时,init/1函数会被执行,以设置服务器的初始状态。From: 这是一个元组,包含发送请求的进程ID (pid()) 和一个标签(Tag)。处理所有非gen_server调用的进程消息。State: 这是当前gen_server的状态。
2024-09-18 23:34:00
223
原创 使用ets和dets,dict和dets
编写一种键->值存储,让它把较小的值放入内存,把较大的值放入磁盘。制作一个适配器模块来实现它,并让这个模块与本章前面的适配器具有相同的接口。1 使用dict存数据。2 使用ets存数据。
2024-09-14 00:19:38
303
原创 erlang:练习-使用dets
(1) 扩展adapter_db1里的适配器,使调用adapter_db1:new(persistent)能创建一个持久性数据存储的元组模块。使用 atom_concat 函数将当前模块名和 Pid 连接成表名,
2024-09-11 23:55:04
193
原创 erlang表意编程
可以看出不知道字典里是否有这个键,因为代码模式匹配了lookup的所有返回值{ok, Val}和not_found。用lookup编写的代码会比用fetch、search和is_key三者之一编写的代码更难以理解和维护。与其猜测意图和分析代码,不如调用一个能显式表达三种意图之一的库方法。lookup 有三种不同的用途:数据检索、搜索和测试某个键是否存在。无需猜测和分析程序,函数名就能清楚表达意图。用来从字典里提取带有已知键的项,如果不存在就会报错。测试字典里是否存在特定的键, 拿到值却不使用。
2024-09-11 00:06:13
166
原创 erlang编程术语(二)
有两个或多个功能相近的库,但无法决定要用哪一个。这些库可能具有相似的函数接口,但性能特征不同。能够在多种不同实现方式做选择。将dict和list两种不同的实现方式存在一个元组里,通过第二个字段原子类型来区分实现方式,接口通用且互不干扰。状态和模块名封装到一起,隐藏信息和创建适配器模块。新版本不支持元组模块。
2024-09-09 23:44:52
393
原创 erlang编程术语
网络请求获取文件,需要对请求进行复杂处理,得到文件请求,同时不同的协议数据不同,非常复杂,而我们只是想处理获取文件的请求,可以使用中间人进程插入到中间,它只负责把网络请求装换成文件请求,极大简化了设计。term_to_binary(Term)和逆函数binary_to_term(Bin)对所有请求消息和返回消息进行加密压缩和解压,让所有通信变成同一种数据格式。有一种通用的格式就足够了。一切消息都使用Erlang数据类型。不需要那么多各不相同的客户端口服务器请求和响应编码,消息统一化来解决多种问题。
2024-09-07 00:32:41
183
原创 opt:application相关练习(二)
prime_queue_server添加到prime_tester_supervisor的监控下。制作一个队列服务器来把请求加入队列, prime_queue_server来处理请求。
2024-09-05 23:15:05
203
原创 opt:application相关练习(一)
制作由10个质数测试服务器组成的进程池。制作一个队列服务器来把请求加入队列,直到其中一个质数测试服务器处于空闲状态为止。当质数测试服务器空闲时,向它发送一个请求来测试某个数字是否是质数。制作一个名为 prime_tester_server 的gen_server,让它测试给定的数字是否是质数。把它添加到sellaprime_supervisor.erl的监控树里。原因分析:sellaprime_supervisor修改没有重新编译。在应用监控器下添加此监控器。修改监控树和app配置。尝试使用判断质数出错。
2024-09-04 23:09:57
269
原创 erlang日志和读取
提供shell输出,又能把写入shell的所有信息复制到一个滚动日志文件,最大文件大小是10MB,超过内容会滚动覆盖。日志写入文件和读取有问题,不能成功写入文件。只让错误记录器报告错误。
2024-09-03 23:20:12
246
原创 erlang:监控树
如果一个监控器在Time秒内执行了超过MaxRestarts次重启,那么这个监控器就会终止所有工作进程然后退出。这是为了防止出现一种情形,即某个进程崩溃、被重启,然后又因为相同原因崩溃而形成的无限循环。supervisor行为用一个回调模块作为参数,里面指定了监控策略以及如何启动监控树里的各个工作进程。它定义了监控器用于启动工作器的函数,将被用作apply(Mod, Fun, ArgList)的参数。这是被监控进程的类型。这是一个原子类型的标签,将来可以用它指代工作进程(如果有必要的话)。
2024-08-30 21:10:05
363
原创 erlang学习-5-otp
当我们需要添加一个新功能接口allname时,写新的nameserver。不能将name_server作为回调模块,服务器名已经硬编译进这个模块。添加热代码交换,发送消息实现。通过热更新修改回调模块。
2024-08-14 23:16:31
182
原创 erlang学习-4-gen_server
通过修改导入的server模块,就能修改非函数行为。回调函数和客户端调用的接口写在一起。手动模拟handle出错。写一个错误处理的服务器。
2024-08-13 22:41:29
198
原创 erlang学习-2-并发
如果在面积函数添加超时2000毫秒,超过此时间没接收消息,进程就会终止,rpc中访问会等不到消息回复,针对发送消息程序创建异步处理,结果自身没发出消息,超时处理可以防止进程资源浪费。通过使用spawn创建进程,服务器port传递参数,处理请求(每个请求一个进程),对于实时性要求不高的抛出事件处理。超时值为0的接收,会立即进入超时部分,但会先读取一次消息队列,每个进程都有自己的进程邮箱, 先进先出。尝试定时器,还没完全理解。从结果上看满足先进先出。
2024-08-10 00:14:27
215
原创 erlang学习-1-并发
打印结果成功,下一行是什么?Msg 这个表达式的值被定义为Msg。把spawn和rpc隐藏,服务器代码改动不影响客户端代码。在此代码中发送消息的进程和接收处理消息的进程是同一个。是传递给函数的参数列表,Pid是进程标识。rpc函数帮助我们发送请求并等待响应。是要执行函数的Erlang模块名,进程处理结果怎么返回发送消息进程?是要在新进程中执行的函数名,计算面积的函数area/1。防止接受到其他进程发的消息。转换为接受消息的进程。
2024-08-08 21:43:50
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人