• 常用的 linux开发的shell脚本


    >
    我常用的 linux开发的shell脚本

    git 使用

    git 删除untracked (不在版本控制中)文件

    • 删除 untracked files git clean -f

    • 连 untracked 的目录也一起删掉 git clean -fd

    • 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的) git clean -xfd

    • 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删 git clean -nxfd git clean -nf git clean -nfd

    • 解决git冲突

    1. git stash    
    2. git pull  
    3. git stash pop  如果有冲突解决冲突  
    4. git push
    
    • 1
    • 2
    • 3
    • 4
    • git clone --recursive 递归下载依赖仓库
    git clone --recursive 用于循环克隆git子项目 
    如: git clone --recursive https://github.com/onnx/onnx-tensorrt.git
    
    • 1
    • 2
    • git 放弃本地修改 强制更新
    git fetch --all
    git reset --hard origin/master
    git fetch 只是下载远程的库的内容,不做任何的合并 git reset 把HEAD指向刚刚下载的最新的版本
    
    • 1
    • 2
    • 3
    • git还原某个文件到特定的版本
    git checkout  
    git checkout 
    
    • 1
    • 2
    • 删除本地所有为暂存的修改:
    git checkout -f
    
    • 1
    • 如果有修改以及加入暂存区的话,那么 使用如下命令:
    git reset --hard 
    git clean -xdf 
    
    • 1
    • 2
    • 更换Git的地址
    git remote set-url origin  http://gitlab.smart-core.cn/liudegui/myinferofflinevideo.git
    
    • 1
    • 查看GLIBCXX版本 strings /usr/lib64/libstdc++.so.6|grep GLIBCXX

    • 启动rsync /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

    • 实时查看Nvidia显卡显存占用情况 watch -n 5 nvidia-smi 其中,5表示每隔5秒刷新一次终端的显示结果。

    • Linux查看物理CPU个数、核数、逻辑CPU个数 总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

    • 查看物理CPU个数 cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l

    • 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep “cpu cores”| uniq

    • 查看逻辑CPU的个数 cat /proc/cpuinfo| grep “processor”| wc -l

    • 拷贝文件时,排除某些不需要的文件 ls /src/ |grep -v .gz |xargs -i cp -r /src/{} /dst

    • 排除某个目录不搜索它: grep -r “test” ./* --exclude-dir=.git

    • 如果要搜索指定文件类型。 find . -name “*.c” |xargs grep “test” -n --color

    在Linux环境下,查看文件内容时,很多时候需要查看指定关键字的前后几行,如查看日志文件时,如果日志文件太大,想直接在Linux 终端中查看,可以grep ‘partten’ filename 进行过滤,如果想查看匹配行的前后几行,可通过在grep后面添加参数来实现,具体如下:

    grep -A 5 'parttern' filename //打印匹配行的后5行
    grep -B 5 'parttern' filename //打印匹配行的前5行
    grep -C 5 'parttern' filename //打印匹配行的前后5行
    grep -5 'parttern' filename //打印匹配行的前后5行 
    tail -n 5 filename 查看文件最后5行内容
    head -n 5 filename 查看文件前5行内容
    sed -n '5,10p' 查看文件5-10行内容 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    docker

    • docker停止所有容器
    ps -ef | grep procedure_name | grep -v grep | awk '{print $2}' | xargs kill -9
    docker rm -f `docker ps -a | grep -v  CONTAINER | awk '{print $1}'`
    docker rmi -f `docker images -a | grep -v REPOSITORY | awk '{print $3}'`
    
    • 1
    • 2
    • 3
    • docker查看容器IP docker inspect --format=‘{{.NetworkSettings.IPAddress}}’ 129a18a3810a
    导出镜像
    docker save -o centos7.tar centos
    导入本地镜像
    docker load --input centos7.tar
    
    • 1
    • 2
    • 3
    • 4
    • 后台启动程序

    nohup ./testapp >/dev/null 2>&1 &

    ffmpeg相关命令

    • FFMPEG循环推流命令:
        for((;;)); do \
            ./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768x320.flv \
            -vcodec copy -acodec copy \
            -f flv -y rtmp://192.168.1.170/live/livestream; \
            sleep 1; \
        done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • ffmpeg转换命令

      • mp4转ts: ffmpeg -i input.mp4 output.ts
      • mp4转h264:ffmpeg -i input.mp4 -vcodec copy -an -vbsf h264_mp4toannexb -f h264 output.h264
    • 解码调试相关命令

    ffprobe -v quiet -show_packets -select_streams v test.ts 2>x|grep pts_time | wc -l
    ffprobe -v quiet -show_packets -select_streams v test.ts 2>x|grep pts
    ffmpeg -i test.ts
    ffplay -stats -f h264 test.h264
    
    • 1
    • 2
    • 3
    • 4
    • 推流命令: ffmpeg -re -i ./1080P.h265 -c:a copy -f flv rtmp://192.21.1.61/live/h265 如上,是否推送的是h265

    • ffmpeg -re -i rtsp://192.21.1.61:554/1080P.h265/playback? -f flv -s 600*400 rtmp://192.21.1.61/live/h265

    • ffmpeg -re -i rtsp://192.21.1.235:554/LiveMedia/ch1/Media1 -f flv -an rtmp://192.21.1.61/live/h265 #-an是去掉你rtsp码流中的音频。

    • 降低视频播放速度 ffmpeg -i output.mp4 -an -filter:v “setpts=10*PTS” output3.mp4

    • 转换分辨率 ffmpeg -i 鹰眼摄像头.mp4 -vf scale=1632:480 output.mp4 -hide_banner

    • 将当前目录下的0.mp4转成00.mp4,并指定输出帧率为15(-r 15),比特率为500k(-b 500k)

    ffmpeg -hwaccel cuvid -c:v h264_cuvid -i 0.mp4 -c:v h264_nvenc -r 15 -b 500k -y 00.mp4

    -hwaccel cuvid:指定使用cuvid硬件加速 -c:v h264_cuvid:使用h264_cuvid进行视频解码 -c:v h264_nvenc:使用h264_nvenc进行视频编码 -vf scale_npp=1280:-1:指定输出视频的宽高,注意,这里和软解码时使用的-vf scale=x:x不一样

    ffmpeg -hwaccel cuvid -c:v h264_cuvid -i -c:v h264_nvenc -b:v 2048k -vf scale_npp=1280:-1 -y

    • 使用ffmpeg保存rtsp视频 ffmpeg -i rtsp://admin:admin@172.18.4.100:554 -b 300 -s 320x240 -vcodec copy -ab 32 -ar 24000 -acodec aac -strict experimental -f mp4 test.mp4
    • FFMPEG循环推流 ffmpeg -stream_loop -1 -re -i /home/dgliu/vipc_linux_x64/60s_1920_1080.h264 -c copy -f flv rtmp://192.21.1.43/live/livestream
    • FFmpeg 将大量图片合成为视频 video
    1.基本格式
    终端输入: ffmpeg -i ./images/image%d.jpg out.mp4
    其中./images/images%d.jpg 为图片路径
    图片的命名格式为image%d.jpg形式,即:image0 image1 image2 .......
    out.mp4为输出视频文件名
    2.指定编码格式的使用
    终端输入: ffmpeg -i ./images/image%d.jpg  -vcodec libx264  out.mp4
    3.指定输出帧率
    终端输入:ffmpeg -i ./images/image%d.jpg  -vcodec libx264 -r 10 out.mp4
    -r 10 表示定义帧率为10,这样输出的视频就是每秒播放十帧
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    用Curl测试POST

    • curl -d “leaderboard_id=7778a8143f111272&score=19&app_key=8d49f16fe034b98b&_test_user=test01” “http://172.16.102.208:8089/wiapi/score”

    • curl http://127.0.0.1:9002/json -d “{“firstName”: “John”,“lastName”: “Smith”,“age”: 25}”

    • curl -L -X POST ‘http://192.21.1.61’ -F ‘uploadFile=@“./README.md”’

    • curl -H “Content-Type: application/json” -X POST --data ‘{“id”: “123”, “name”:“test”}’ localhost:8888/user/post

    压力测试

    • ab压力测试
    ab -n 10 -c 1 -p get_fea-img_base64_array.json -T application/json http://10.40.27.152:8090/face/get_fea
    
    • 1

    循环执行脚本

    while ((1)); do date; echo 'hello'; sleep 1; done
    
    • 1

    linux查看端口占用

    linux查看端口被哪个进程占用
    netstat -tunpl | grep 22
    查看那个进程占用了xxx端口
    lsof -i:xxx
    查看进程号为xxx的进程在哪里
    ps -ef|grep xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • make -j cpu数目
    processor_num=`cat /proc/cpuinfo |grep processor |wc -l`
    make -j $processor_num
    
    • 1
    • 2

    查看 cpu 信息 查看硬盘信息 更详细的信息 查看网卡信息

    • 查看 cpu 信息
    cat /proc/cpuinfo
    cat /proc/meminfo
    
    • 1
    • 2
    • 查看硬盘信息 df -lh

    • 更详细的信息 cat /proc/scsi/scsi

    • 查看网卡信息 dmesg | grep eth

    • 更常用的命令 ( 显示系统核心版本号、名称、机器类型等 ) uname -a

    • 创建多个文件夹的方法 mkdir -p /etc/confd/{conf.d,templates}

    vim使用

    • vim替换字符串 :%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good

    统计总数大小

    du -sh filename(其实我们经常用du -sh *,显示当前目录下所有的文件及其大小,如果要排序再在后面加上 | sort -n)

    du -sm * | sort -n //统计当前目录大小 并按大小 排序 du -sk * | sort -n du -sk * | grep filename //查看一个文件夹的大小 du -m | cut -d “/” -f 2 //看第二个/ 字符前的文字

  • 相关阅读:
    Docker:创建主从复制的Redis集群
    (WRF-UCM)高精度城市化气象动力模拟技术
    HTML5、CSS3、ES6新特性总结
    再也不想去阿里巴巴面试了,6年测开面试遭到这样打击.....
    2022 退役记
    (ubuntu) 安装JDK
    【2024官方文档版学习笔记】React 状态管理
    1-(2-甲氧基乙基)-3-乙基咪唑三氟甲基磺酸盐{[C22O1IM][TfO]}离子液体
    ModuleNotFoundError: No module named ‘torchvision.models.utils‘
    LeetCode27.移除元素(暴力法、快慢指针法)
  • 原文地址:https://blog.csdn.net/stallion5632/article/details/126047684