![추가 읽기](https://linux55.com/image/134005/%EC%B6%94%EA%B0%80%20%EC%9D%BD%EA%B8%B0.png)
다음 launcher.sh 파일이 있습니다.
cd /root/craig/mybot
tmux new-session -d -s mybot "'/usr/bin/python3.5' launcher.py --start --auto-restart"
그런 다음 /systemd/system에 다음 mybot.service 파일이 있습니다.
[Unit]
After=network.target
[Service]
ExecStart=/root/craig/mybot/launcher.sh
[Install]
WantedBy=default.target
실행하면 잘 작동 /root/craig/mybot/launcher.sh
하지만 서버를 다시 시작하면 서비스가 시작되고 launcher.sh가 시작되지 않는 것 같습니다(봇이 온라인 상태가 되지 않기 때문입니다). 왜 이런거야? 서비스가 활성화된 것으로 나타납니다. 저는 CentOS 7을 사용하고 있습니다.
내가 실행하면 systemctrl status mybot
다음을 얻습니다.
May 25 03:48:56 vultr.guest systemd[1]: Starting mybot.service...
May 25 03:48:56 vultr.guest systemd[818]: Failed at step EXEC spawning /root/craig/mybot/launcher.sh: Exec format error
May 25 03:48:56 vultr.guest systemd[1]: mybot.service: control process exited, code=exited status=203
May 25 03:48:56 vultr.guest systemd[1]: Failed to start mybot.service.
May 25 03:48:56 vultr.guest systemd[1]: Unit mybot.service entered failed state.
May 25 03:48:56 vultr.guest systemd[1]: mybot.service failed.
답변1
다음 launcher.sh 파일이 있습니다.
[…]
May 25 03:48:56 vultr.guest systemd[818]: Failed at step EXEC spawning /root/craig/mybot/launcher.sh: Exec format error
systemd는 쉘 인터프리터가 아닙니다. 프로그램을 프로그램 이미지 파일로 직접 실행할 수 없는 경우 인터프리터 자체로 돌아가는 것을 포함하여 셸이 수행하는 작업을 수행하지 않습니다.
/root/craig/mybot/launcher.sh
시스템 호출에 의해 프로그램 이미지 파일로 사용될 수 있는 유효한 실행 파일이 아닙니다 execve()
. 이를 위해서는 #!
파일의 처음 2바이트에 있는 문자로 표시되는 매직 넘버와 그 뒤에 파일의 나머지 부분을 해석할 인터프리터의 경로 이름이 있어야 합니다 .