Ianus Inferus/地狱门神

Exoptatus infera advenisti.

View on GitHub Go Back

在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不存在,说明程序异常结束

Go Back