作为一个 Linux 方面的新手,我正在笨手笨脚地完成这项工作,所以请耐心等待 :)
我想将程序的进程 ID 输出到文件。根据我的阅读,这通常是通过 Linux 维护的一个特殊 pling 变量来实现的:
make_something_run.sh &
echo $! > /var/run/someting.pid
但是当我尝试在 red5 的启动脚本中应用此方法时,它成功创建了 pid 文件,但未在其中找到 id。这是具体脚本:
start)
echo -n "Starting Red5"
echo -n " "
cd $RED5_HOME
su -s /bin/bash -c "$RED5_HOME/$RED5_PROG.sh &" $RED5_USER
echo "$RED5_HOME/$RED5_PROG.sh &"
## su -s /bin/bash -c "$RED5_HOME/$RED5_PROG.sh > start.log &" $RED5_USER
echo $! > /var/run/red5.pid
wait $!
sleep 2
;;
我尝试过使用和不使用wait $!
(我认为它会等待进程启动后再写入文件?),但都没有成功。我唯一的其他想法是使用 grep 和 ps aux 做一些花哨的事情来提取数字,尽管我不知道这是否是一种可靠的方法。
答案1
您需要添加回声
make_something_run.sh & echo $! > /var/run/someting.pid
^
http://www.odi.ch/weblog/posting.php?posting=291
编辑:
su -s /bin/bash -c "${RED5_HOME}/${RED5_PROG}.sh & echo \$! > /var/run/red5.pid" $RED5_USER
或
https://stackoverflow.com/questions/6197165/getting-a-pid-from-a-background-process-run-as-another-user