Python ライブラリ paramiko を使用してリモート コンピューターにログインし、python-daemon ライブラリを使用してデーモン プロセスを開始します。このライブラリは、プログラムの終了後も何らかのジョブ キューとして機能しています。これはこれまでの私のコードです:
(この例では、デーモンはファイルを開き、いくつかの乱数をそれに出力します)
#client.py
import paramiko
def main():
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('machine1', username='user1')
command = 'python server_daemon.py'
stdin,stdout,stderr = ssh.exec_command(command)
ssh.close()
if __name__=="__main__":
main()
'
#server_daemon.py
import time
import daemon
def main():
with daemon.DaemonContext():
s = [str(x)+"\n" for x in range(1000)]
for i in s:
with open("test.txt", "a") as f:
f.write(i)
time.sleep(0.4)
while True:
pass
if __name__=="__main__":
main()
残念ながら、これはうまくいかないようです。スクリプトからデーモン化コンテキストを削除すると、機能するように見えますが、サーバーが終了するまで待つ必要があります。また、出力をリダイレクトしようとしましたが/dev/null
、これは機能しませんでした。提案に感謝します。