この記事はTencentCloud + Communityによって自動的に同期され、元のアドレスは[https://stackoverflow.club/article/use_supervisor_in_ubuntu/](https://stackoverflow.club/article/use_supervisor_in_ubuntu/)です。
sudo apt install supervisor
例は次のとおりです。ディレクトリ/etc/supervisor/conf.d/の下にredsocks2.confを作成し、以下を追加します。
[ program:redsocks2]
command =/home/wenfeng/bin/redsocks2 -c /home/wenfeng/conf/redsocks2.conf
autostart =true
autorestart =true
redirect_stderr =true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups =10
stdout_logfile =/var/log/supervisor/redsocks2.log
[ program:x]
:構成ファイルには少なくとも1つのプログラムが含まれている必要があり、xはプログラムの名前であり、書き込まれている必要があり、空にすることはできません。 command
:プログラムの起動時に実行されるコマンドが含まれています directory
:子プロセスの実行時にsupervisordが一時的にこのディレクトリに切り替えます user
:アカウント名 startsecs
:プログラムがSTARING状態からRUNNING状態に移行するためにプロセスが実行を継続する必要がある時間(単位:秒) redirect_stderr
:trueの場合、プロセスのstderr出力は、stdoutファイル記述子でsupervisordに返送されます。 stdout_logfile
:指定されたファイルにプロセスstdoutを出力します stdout_logfile_maxbytes
:stdout_logfileは、ログファイルの最大バイト数を指定します。デフォルトは50MBで、KB、MB、GBなどの単位を追加できます。 stdout_logfile_backups
:保存するstdout_logfileバックアップの数conf
ファイルを/ etc / supervisor / conf.d /
ディレクトリに置くだけの場合は、識別のために supervisor
を再起動します
sudo service supervisor restart
次に、プログラムを開始します
sudo supervisorctl start awesome
supervisor
でエラーが発生した場合は、 / var / log / supervisor / supervisord.log
でログを表示できます。
アプリに問題がある場合は、 / srv / awesome / log / app.log
でログを表示できます。
sshトンネルを実行すると、スーパーバイザーは常に終了します
[ program:gpu_ssh_tunnel]
command =/usr/bin/ssh -C2qTnN -D 1080 gpu_name@gpu_domin -i /home/wenfeng/.ssh/id_rsa
autostart =true
autorestart =true
redirect_stderr =true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups =10
stdout_logfile =/var/log/supervisor/gpu_ssh_tunnel.log
Supervisorctlステータス表示
gpu_ssh_tunnel FATAL Exited too quickly(process log may have details)
独自の監視スクリプトを作成する
#! /bin/bash
whiletruedo
procnum=`ps -ef| grep 'your_name@your_domin' | grep -v grep | wc -l`if[ $procnum -eq 0];then
/usr/bin/ssh -f -C2qTnN -D 1080 your_name@your_domin -p 88-i /home/wenfeng/.ssh/id_rsa
fi
sleep 30
done
これはまだ機能せず、ログには「ホストキーの検証に失敗しました」と表示されます。
最終的に、スーパーバイザーがrootアカウントを使用してsshを実行したため、新しい既知のホストが存在するため、yesを入力せずに直接終了して受け入れることがわかりました。
次の実験は、sudoで実行するときに指紋を再確認する必要があることを示しています
sudo /usr/bin/ssh -C2qTnN -D 1080 your_name@your_domin -p your_port -i /home/wenfeng/.ssh/id_rsa
The authenticity of host '[your_name]:88 ([your_ip]:88)' can't be established.
ECDSA key fingerprint is SHA256:M/7Vo2ZjnVVc********DgkZtIjrESKMIaj/rfryfDUmqc.
Are you sure you want to continueconnecting(yes/no)? yes
解決策は、最初にルートアカウントでログインするか、同様のプロセスでスーパーバイザーの指定されたユーザー機能を使用することです。
Recommended Posts