日常到运维工作中,比如编写一下守护进程的启动脚本,常常需要将该进程到PID记录到文件中去,用来对该进程进行关闭,监控等……
场景一:
使用nohup将进程丢到后台运行:
$ nohup sleep 100 > /dev/null 2>&1 & $ echo $! > $PIDFILE
场景二:
使用su命令,以另一个用户的权限启动守护进程
$ id uid=0(root) gid=0(root) groups=0(root) $ su -m nobody -c 'nohup sleep 100 > /dev/null 2>&1 & echo $! ' > $PIDFILE
场景三:
当在
场景二
中启动守护进程的时候,需要使用SHELL变量的时候,这个时候就需要使用双引号,但是这个时候echo $!
就无法捕获守护进程的PID了;
$ SLEEP_TIME=100 $ su -m nobody -c "nohup sleep $SLEEP_TIME > /dev/null 2>&1 & echo \$! " > $PIDFILE
暂无评论