深入了解nohup

2021-09-03 10:26:16 字數 1787 閱讀 2194

昨日寫了一篇關於「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 ...