次の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バイトにある文字で表されるマジックナンバーと、その後にファイルの残りの部分を解釈するインタプリタのパス名が必要です。