서버를 다시 시작할 때 백그라운드에서 동시에 실행해야 하는 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의 서비스 관리자)를 살펴보세요.