BASH 非互動執行耗時長的任務

2021-04-27 10:37:31 字數 993 閱讀 7857

問題:

你讓工作在後台進行,並且退出

shell

去喝個咖啡,當你回來檢視的時候,發現工作沒有執行並且沒有完成,實際上工作沒有進行多少,跟你離開工作台的時候差不多。

解決方案:

如果你希望在後台執行某個任務,並且在任務完成前退出

shell

,可以使用

nohup

命令:

$ nohup long &

$

討論:當使用

'&'將任務放入後台執行的時候,這個任務依然是

bash shell

程序的乙個子程序。當退出

shell

的時候,

bash

會傳送hangup(hup)

訊號給所有的子程序。這是任務沒有執行的原因。當你退出

bash shell

,bash

的後台任務也都被

kill了。

nohup

命令會使得子程序忽略

hang-up

訊號。但是你仍然可以通過

kill

來殺掉某個程序,

kill

是傳送sigterm

而不是sighup

訊號。但是使用了

nohup

,在bash

退出的時候,就不會關閉你的任務了。

nohup

的提示訊息是告訴你把任務的輸出重定向到了

nohup.out

中,這是非常有用的。通常使用了

nohup

命令之後,你都會關閉掉

shell

,那麼任務的輸出會到**呢?而且重定向到某個不存在目標會出錯。

nohup

會將輸出重定向到當前目錄的

nohup.out

中,你也可以將輸出重定向到其他地方,

nohup

會比較智慧型的區分出來。

sftp 非互動模式 Bash 的4種執行模式

1.在日常使用bash的過程中,老是會遇見通過ssh 連線到伺服器產生環境變數不可用。命令不存在,是不是讓人有點懊惱。2.還有就是在登入armbian的時候會有串資料提示,但是在切換使用者後並沒有這種提示。是如何做到的呢?上面的問題都是由bash的執行模式的不同帶來的現象。4種模是由2種狀態的交叉組...

通過paramiko互動式執行bash 命令

usr bin python coding utf 8 import paramiko 例項化sshclient client paramiko.sshclient 自動新增策略,儲存伺服器的主機名和金鑰資訊,如果不新增,那麼不再本地know hosts檔案中記錄的主機將無法連線 client.se...

ssh執行非互動式命令

如果你想用指令碼自動化登入到某台機子上,然後在上邊執行個命令,怎麼辦呢?可以使用ssh的非互動式命令 ssh zhc hongchangfirst.com home hczhang bin build.sh 這裡可以用expect模擬鍵盤輸入將密碼輸入,也可以用無密碼登入,具體就是將自己的公鑰放在對...