nohupを使用してバッチ処理を実行するには?

nohupを使用してバッチ処理を実行するには?

サーバーを再起動するときにバックグラウンドで同時に実行する必要がある5つのPHPファイルがあります。各ファイルは少なくとも4回実行する必要があります。

現在、スクリプト全体を端末に手動で貼り付けてEnterキーを押します。

これが正しいアプローチですか、それともこれを達成するより良い方法がありますか?

nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.1.log &
nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.2.log &
nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.3.log &
nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.4.log &
...
...
nohup php /var/myapp/send-push.php > /var/log/myapp-log/push.1.log &
nohup php /var/myapp/send-push.php > /var/log/myapp-log/push.2.log &
nohup php /var/myapp/send-push.php > /var/log/myapp-log/push.3.log &
nohup php /var/myapp/send-push.php > /var/log/myapp-log/push.4.log &

ただし、この方法で実行すると、次のような複数のメッセージが返り始めます。

/push.4.log &ignoring input and redirecting stderr to stdout
nohup: ignoring input and redirecting stderr to stdout
nohup: ignoring input and redirecting stderr to stdout
nohup: ignoring input and redirecting stderr to stdout




[1]   Exit 255                nohup php /var/myapp/another-script.php > /var/log/myapp-log/listener.1.log
[6]   Exit 255                nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.1.log
[7]   Exit 255                nohup php /var/myapp/another-script.php > /var/log/myapp-log/listener.2.log
[12]   Exit 255                nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.2.log
[13]   Exit 255                nohup php /var/myapp/another-script.php > /var/log/myapp-log/listener.3.log
[18]   Exit 255                nohup php /var/myapp/send-mail.php > /var/log/myapp-log/mail.3.log
[19]   Exit 255                nohup php /var/myapp/another-script.php > /var/log/myapp-log/listener.4.log

これらのバッチスクリプトを正しく実行するにはどうすればよいですか?

ベストアンサー1

a 2>&1 上記のstderrをstdoutにリダイレクトしてみてください。たとえば、各行の末尾に追加します。

nohup php /var/myapp/send-push.php > /var/log/myapp-log/push.1.log 2>&1

これにより問題が解決します。ただし、再起動後に自動的に起動することをお勧めします。 systemd(またはそのOSのサービスマネージャ)を見てください。

おすすめ記事