[linux]常用指令
进程线程相关
ps -ef | grep Webrtc
top -H -p <pid>
ps -T -p <pid>
GDB相关
gdb WebrtcAgent.2333 core.WebrtcAgent.2333 //加载coredump bt //backtrace p varname //查看变量 p *object._M_ptr //智能指针真实指针 thread apply all bt //全部线程及帧栈 info threads //显示全部线程 f // frame l p *this attach pid //加入正在运行的进程 dettach pid set print pretty on set print object on
管道相关
管道常用于进程间通信
即上一个进程的stdout作为下一个进程的stdin(直接对接)
在linux中 | 符号即为管道符号,将上一个命令的stdout作为下一个命令的stdin
例:
将当前目录下含有123的文件全部删除(单输入)
ls | grep 123 | xargs rm
将当前目录下含有123的文件全部放入其他文件夹
ls | grep 123 | xargs -t -i mv {} ../file
将含有关键字的文件打包压缩
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
附:
https://www.runoob.com/linux/linux-comm-xargs.html
FFMPEG
ffmpeg -i record_6860793027212984321.flv -vf fps=0.4 img5/out%d.png //抽帧为图片 ffmpeg -f alaw -ar 8000 -ac 1 -i 2020_11_18_20-12-24_recvd_pcma_6896435569312677892.pcma -ar 8000 -ac 1 -f s16le out.pcm ffplay/ffmpeg -decoders
编译
add_dependencies(libyuv libjpeg-turbo)
#!/bin/bash path="$1" #获取带入的参数 $0为文件本身 同c程序argv #index=`expr index "${path}" ".cpp"` #echo ${index} #index=`expr ${index} - 1` #exec="${path:0:index}" #echo ${path} #echo ${exec} g++ -g -o run $1 `pkg-config --libs --cflags libavutil` ./run
后台(并发)运行函数/命令 (后台运行符&)
#!/bin/bash
echo "hello, world"
#!/bin/bash
function sub1 {
for i in {1..5}
do
echo `date +%T`" sub1" #注意date 和+号之间有空格。如:date +%m/%d date取"月/日"的命令行。
sleep 1
done
}
function sub2 {
for i in {1..5}
do
echo `date +%T`" sub2"
sleep 1
done
}
function sub3 {
for i in {1..5}
do
echo `date +%T`" sub3"
sleep 1
done
}
sub1&
sub2&
sub3&