昨日寫了一篇關於「nohup後台執行程式」文章(修復「正確操作nohup讓程式始終在後台執行」中已發現的問題
),今天幫助開發人員具體解決了乙個問題。
註解:dump為研發人員開發的程式;
test.sh為測試nohup的指令碼,指令碼內容見20行-35行。
[root@ce340 gliver]# killall dump總結:[root@ce340 gliver]# ps -c test.sh
pid tty time cmd
15711 pts/0 00:00:00 test.sh
[root@ce340 gliver]# killall test.sh
[1]+ terminated nohup ./test.sh > /dev/null 2>&1
[root@ce340 gliver]# nohup ./test.sh >/dev/null 2>&1 &
[1] 18531
[root@ce340 gliver]# ps -c test.sh
pid tty time cmd
18531 pts/0 00:00:00 test.sh
19603 pts/0 00:00:00 test.sh
[root@ce340 gliver]# ps -c dump
pid tty time cmd
17722 pts/0 00:00:05 dump
[root@ce340 gliver]# killall dump
[root@ce340 gliver]# ps -c dump
pid tty time cmd
20837 pts/0 00:00:00 dump
[root@ce340 gliver]# cat ./test.sh
#!/bin/bash
while :
doif [[ ! `ps -ef | grep dump | grep -v grep` ]]; then
echo "down"
#log to file
echo "the deamon down at $(date)" >> /home/user/desktop/gliver/dump.log
su -l -c "nohup /home/user/desktop/gliver/dump rtmp: >/dev/null 2>&1 &"
# start time
if [[ ! `ps -ef | grep dump | grep -v grep` ]]; then
echo "the deamon start at $(date)" >> /home/user/desktop/gliver/dump.log
fifi
usleep 1000
done
[root@ce340 gliver]#
當執行nohup時,並不是建立乙個當前程序的父程序,而是nohup能讓後面緊跟的命令忽略 hangup 訊號,通過忽略hup訊號來避免程序中途被中斷,正如執行pstree -npu或ps -ef的第三列展示的那樣。
其次nohup後面緊跟程序名,如果程序名所指向的程序接受引數,則程序名後面跟著的引數將傳入程序名所指向的程序,否則將被丟棄,但重定向似乎是個例外,重定向不僅會作用於nohup本身又能作用於程序名指向的程序。
ps:一旦使用nohup,就不能使用「kill -hup pid」,而是要使用「killall 程序名稱」殺死程序。
深入了解nohup
原始出處 作者資訊和本宣告。否則將追究法律責任。昨日寫了一篇關於 nohup後台執行程式 文章 修復 正確操作nohup讓程式始終在後台執行 中已發現的問題 今天幫助開發人員具體解決了乙個問題。註解 dump為研發人員開發的程式 test.sh為測試nohup的指令碼,指令碼內容見20行 35行。1...
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...