(摘) Linux 使用中的一些技巧和功能

声明:内容源自网络,版权归原作者所有。若有侵权请联系我们

下载ts视频并合并

因为各种原因(我就遇到过有站长将ts文件扩展名改为了jpg),之前的ffmpeg不能直接下载合并,但能获取到m3u8列表文件。

#!/bin/bash

i=0
for line in `cat 1.m3u8`  #视频列表文件
do
  #echo $line
  if [ "${line:0:5}" = "https" ] #读取ts视频片段地址
  then
     let i++
     cmd="curl ${line:0:${#line}-1}"  #读取时总是有换行符,删除
     echo $cmd ">>>>" $i
     `$cmd --output $i.ts -s`  #下载视频片段为顺序文件
  fi
done

#获取所有文件并合并为单个
find . -type f | grep [0-9]\\.ts | cut -c 3- | sort -n | xargs cat >> abc.ts

#转换为mp4
ffmpeg -i abc.ts -acodec copy -vcodec copy -f mp4 test.mp4

ffmpeg 合并文件

ffmpeg文件合并 文件1.ts~ 100.ts 流媒体文件

1.txt编辑

file 1.ts
file 2.ts
...

file 100.ts

命令 (-vcodec copy -acodec copy 等于 -c copy)

.\ffmpeg.exe -f concat -i .\1.txt -c copy .\output.mkv

或者

.\ffmpeg.exe -f concat -i .\1.txt -c copy .\output.mp4

脚本守护进程

后台程序莫名其妙崩溃,最好的情况是先检查问题,再恢复上线。但是也经常需要先完成任务,然后在用户最少的时间段去排除问题。

这个脚本就是不断轮循,判断后台是否有指定进程名存在。若不存在则直接运行,并发一个企业微信信息给网管。

#!/bin/bash

while true
do
   if test $( pgrep -f wyfy | wc -l ) -eq 0
   then
      echo "进程不存在"
      ./qywx "wyfy进程重启"
      nohup ./wyfy & 
   else
      echo "存在进程"
   fi 
   sleep 1m
done

Ubuntu 关闭时间同步

sudo timedatectl set-ntp false

挂载网络磁盘

sudo mount -o username=pi,password=pi,vers=1.0,iocharset=utf8 //192.168.100.4/disk /home/ease/rdisk

linux定时任务crontab设置

*/1 * * * * service mysqld restart //每隔1分钟执行一次

*/10 * * * * service mysqld restart //每隔10分钟执行一次

0 */1 * * * service mysqld restart //每1小时执行一次

0 */2 * * * service mysqld restart //每2小时执行一次

0 10 * * * service mysqld restart //每天10点执行

30 19 * * * service mysqld restart //每天19点30分执行

0 10 * * 1 service mysqld restart //每周一10点执行

30 17 * * 5 service mysqld restart //每周五17点30分执行

0 10 1 10 * service mysqld restart //每年的10月1日10点执行

0 20 8 8 * service mysqld restart //每年的8月8日20点执行

Shell if

   INT1 -eq INT2           =
   INT1 -ne INT2           <>
   INT1 -gt INT2           >
   INT1 -ge INT2           >=
   INT1 -lt INT2           <
   INT1 -le INT2           <=

显示占用空间并排序

du -s * | sort -nr | head

查看系统glibc支持的版本

strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_

ssh免密

本地客户端生成公私钥:(一路回车默认即可) ssh-keygen

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.235.22

磁盘空间占用情况

du -s * | sort -nr | head 空间占用并排序输出

screen创建后自动执行命令

screen -dmS test bash -c ‘go run /1.go’

远程运行指令

ssh -p 2222 abc@defg.3322.org “df -lh”

flac转换为mp3

find . -name “*.flac” -exec ffmpeg -i {} -ab 320k -map_metadata 0 -id3v2_version 3 {}.mp3 ;

让电脑不休眠

这里有个工具,xdotool,用于控制鼠标或键盘。其实就是让鼠标动来动去。

#!/bin/bash
while [ 1=1 ]
do
   xdotool mousemove 1 1
   sleep 10
   xdotool mousemove 150 60
   sleep 60
done

下载ts视频

ffmpeg -i https://…/index.m3u8 -acodec copy -vcodec copy output.mp4

查询当前所有连接的ip

netstat -ntu

将 tcp 过滤出来 : netstat -ntu | grep tcp

将第五列单独截出来: netstat -ntu | grep tcp | awk ‘{print $5}’

仅列出IP: netstat -ntu | grep tcp | awk ‘{print $5}’ | cut -d: -f1

使用 sort 默认字符顺序将字段值排序 :netstat -ntu | grep tcp | awk ‘{print $5}’ | cut -d: -f1 | sort

将已经排序好的字段计算不同值的数目 : netstat -ntu | grep tcp | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c

服务器登陆报告

即在有用户通过ssh时,报告信息到微信。qywx是我的一个通知信息到企业微信的工具

nano /etc/profile

#获取当前通过22端口连接的IP
getip=`netstat -ntu | grep :22 | awk '{print $5}' | cut -d: -f1 | sort`
./qywx "\n服务器有用户登陆:\n$getip"

相关文章