ssh公升級後nohup程序在終端退出後消失, ssh版本如下:
# ssh -v
openssh_8.4p1, openssl 1.0.2k-fips 26 jan 2017
懷疑是openssh的bug。
終端ssh登入後,再通過:su - 使用者 後執行nohup指令,這樣再退出終端後,程序仍可保留。
如果上述方式還不行,可以用strace跟蹤一下看看是什麼訊號導致程序終止的。
# strace -t -tt -e trace=all -p 28842
strace: process 28842 attached
15:46:35.200201 read(4,
0x7bf1c0, 20)
= ? erestartsys (to be restarted if sa_restart is set)
<82.387507>
15:47:57.587934 --- sighup ---
15:47:57.588034 read(4, 0x7bf1c0, 20)
= ? erestartsys (to be restarted if sa_restart is set)
<0.001049>
15:47:57.589260 --- sigterm ---
15:47:57.589429 +++ killed by sigterm +++
這裡的情況是被sigterm終止,正常情況下,sigterm訊號是不會傳遞給nohup子程序的。
臨時解決辦法:
將要nohup執行的命令加到sh指令碼中,然後再sh的前面部分加入sigterm訊號的攔截:
# cat 1.sh
trap
'' sigterm ##這裡攔截,讓它不處理
tail -f gun
# nohup ./1.sh &
openssh_8.4後加了sshd.socket方式啟動sshd服務,而以這種方式啟動,使用的服務配置檔案為:[email protected]
[root@2 system]
# vi [email protected]
[unit]
description=openssh per-connection server daemon
documentation=man:sshd(8) man:sshd_config(5)
wants=sshd-keygen.service
after=sshd-keygen.service
[service]
environmentfile=-/etc/sysconfig/sshd
execstart=-/usr/sbin/sshd -i $options
killmode=process ### 相比sshd.service少了這個設定
standardinput=socket
加上上述配置,重啟sshd.socket方式服務即可。 在ssh斷開連線後仍然執行程序
當我們遠端訪問伺服器跑程式時,難免遇到必須斷開連線而不希望停止程序的情況。所以這裡,我們可以採用tmux來解決這個問題。在server中,sudo apt install tmux tmux new s test之後會進入乙個terminal,在這裡輸入命令,之後可以ctrl b 之後按d,實現 t...
使用nohup讓SSH客戶端斷開後保持程序繼續執行
本文參考阿里雲幫助中心 nohup可以使後面的命令不會響應結束通話 sighup 訊號。也就是說,通過遠端登入執行nohup命令後,即使退出登入後,程式還是會正常執行。通常情況下,nohup命令最後會跟上 字元,表示將這個命令放至後台執行,這樣才能真正做到將這個命令放至後台持續的執行。具體示例如下所...
mac電腦公升級後 ssh無法連線解決辦法
前幾天碰到的問題總結一下,如上圖,macos系統版本為10.15.4的時候,git專案ssh方式的 倉庫無法連線,無響應狀態,沒有錯誤提示,就很尷尬。測試ssh配置是否正確 輸入命令 ssh tv git qiyi com 後是gitlab網域名稱 連線超時,提示版本 openssh 8.1p1,l...