ssh公升級後nohup程序在終端退出後消失

2021-10-14 18:31:41 字數 1535 閱讀 3723

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...