在openSUSE中创建单独session运行程序
Ianus Inferus
2022-05-12
以ping为例来说明
创建session并输出SID,输出返回码到exit_code.txt,输出结果到ping.txt
rm -f exit_code.txt
setsid bash -c 'ps -o sid:1= $$; nohup ping -c 20 www.bing.com > ping.txt 2>&1; echo $? > exit_code.txt' > running.sid
查询session中进程的PID,可判断session是否已经结束
ps -A -o pid:1,sid:1= | egrep '[^0-9]*'$(cat running.sid)'$' | sed 's/^\([0-9]*\).*$/\1/'
结束session中的所有进程
ps -A -o pgid:1,sid:1= | egrep '[^0-9]*'$(cat running.sid)'$' | sed 's/^\([0-9]*\).*$/\1/' | uniq | kill -- -$(cat -)
rm running.sid
如果session结束后exit_code.txt不存在,说明程序异常结束