在神奇的nohup command >/dev/null 2>&1 &失灵(关闭shell后进程还是会被杀死)之后,只好尝试用screen来实现后台运行的功能…

然而,更神奇的是,在shell中手动执行命令可以用screen的名字来指定screen进程,但是一旦用脚本,就会提示找不到对应的screen 。所以,只好再加一个判断来选择某一个screen的具体pid…折腾了一个上午,代码如下:

#! /bin/bash
screen_name=$"runudp2raw"
spid=$(screen -ls | grep $screen_name)
spid=${spid%.*}
echo $spid
screen -X -S $spid quit
screen -dmS $screen_name
spid=$(screen -ls | grep $screen_name)
spid=${spid%.*}
echo $spid
cmd=$"udp2raw"
screen -x -S $spid -p 0 -X stuff "$cmd"
screen -x -S $spid -p 0 -X stuff $'\n'