TypeScriptファイルを実行するサービスを作成しようとしています。 これはこれまで私のサービスファイルの内容です。 [Unit]
Description=Service that runs the Parenti Bot
After=network.target
[Service]
Type=simple
User=abias
ExecStart=/home/abias/.local/share/pnpm/ts-node /home/abias/projects/lemmygrad-parenti-bot/bot.ts
Restart=on-failure
[Install]
WantedBy=multi-user.target
#!/usr/bin/env ts-nodeファイルの上部にshebangを追加しましたbot.ts。私も走ることに決めたsudo chmod +x bot.ts。これをすべて行ったにもかかわらず、sudo systemctl statusサービスで実行すると、次の結果が表示されます。 × parentibot.service - Service that runs the Parenti Bot
Loaded: loaded (/usr/lib/systemd/system/parentibot.service; disabled; preset: disabled)
Active: failed (Result: exit-code) since Thu 2022-12-08 17:50:32 EST; 11s ago
Duration: 6ms
Process: 283671 ExecStart=/home/abias/.local/share/pnpm/ts-node /home/abias/projects/lemmygrad-parenti-bot/bot.ts (code=e>
Main PID: 283671 (code=exited, status=203/EXEC)
CPU: 3ms
Dec 08 17:50:32 fedora systemd[1]: parentibot.service: Scheduled restart job, restart counter is at 5.
Dec 08 17:50:32 fedora systemd[1]: Stopped parentibot.service - Service that runs the Parenti Bot.
Dec 08 17:50:32 fedora systemd[1]: parentibot.service: Start request repeated too quickly.
Dec 08 17:50:32 fedora systemd[1]: parentibot.service: Failed with result 'exit-code'.
Dec 08 17:50:32 fedora systemd[1]: Failed to start parentibot.service - Service that runs the Parenti Bot.
私は何を間違えることができましたか? 編集する:実行出力sudo journalctl -xeu yourService.service Dec 08 17:50:32 fedora systemd[1]: Stopped parentibot.service - Service that runs the Parenti Bot.
░░ Subject: A stop job for unit parentibot.service has finished
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A stop job for unit parentibot.service has finished.
░░
░░ The job identifier is 22216 and the job result is done.
Dec 08 17:50:32 fedora systemd[1]: parentibot.service: Start request repeated too quickly.
Dec 08 17:50:32 fedora systemd[1]: parentibot.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ The unit parentibot.service has entered the 'failed' state with result 'exit-code'.
Dec 08 17:50:32 fedora systemd[1]: Failed to start parentibot.service - Service that runs the Parenti Bot.
░░ Subject: A start job for unit parentibot.service has failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A start job for unit parentibot.service has finished with a failure.
░░
░░ The job identifier is 22216 and the job result is failed.
編集2:内容bot.ts:見ることができますここ。 編集3:先ほど実行したところ、journalctl次のエラーが表示されましたparentibot.service: Failed to locate executable /home/abias/.local/share/pnpm/ts-node。これが問題のように見えますが、次の質問が提起されます。実行可能ファイルが見つからないのはなぜですか(実行可能ファイルがあるかどうかを確認しました)。
起動スクリプトを取得しようとしています(システムサービス)のためのdocker-compose containers。 私はそれが動作するように努力しており、変更後に変更しようとしています。いくつかは動作し、他のものは期待どおりに動作しません。環境変数システム構成を使用します。 # named `dc-mag235.service`
[Unit]
Description=Magento 2.3.5 Docker-Compose Containers
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/var/www/docker/_systemd.startups_/mag2.35.env.file
#PassEnvironment=$DCFOLDER
Type=simple
TimeoutStartSec=0
Restart=always
WorkingDirectory=${DCFOLDER}
ExecStartPre=mkdir -p ${LOGFOLDER}
ExecStartPre=echo ${DCFOLDER}
ExecStartPre=echo Starting Docker-compose service for ${DESCRIPTION}...
ExecStart=/usr/local/bin/docker-compose start
ExecReload=/usr/local/bin/docker-compose restart
ExecStop=/usr/local/bin/docker-compose stop
[Install]
WantedBy=multi-user.target
DESCRIPTION=Magento 2.3.5 Docker-Compose Containers
LOGFOLDER=/var/www/docker/_initlogs_
LOGFILE=$LOGFOLDER/dc-mag235.startup.log
DCFOLDER=/var/www/docker/magento2-docker-full-supervisord-expanded/release-magento2.35
WorkingDirectory変数と一緒に試してみてください$DCFOLDER。 削除すると、PassEnvironmentここで説明したのと同じエラーが発生します。: sudo service dc-mag235 status
/etc/systemd/system/dc-glo-mag235.service:8: Invalid environment name for PassEnvironment, ignoring: $DCFOLDER
Apr 22 12:32:20 glo020-truservcomm-jhb1-001 systemd[1]: /etc/systemd/system/dc-glo-mag235.service:12: WorkingDirectory= path is not absolute: ${DCFOLDER}
代わりにcd $DCFOLDER && docker-compose restartasコマンドを試してください。ExecStartWorkingDirectory Executable "cd" not found in path "/usr/local/sbin:/usr/local/bin:/usr/sbin:
注: 無効WorkingDirectoryにしてから、cdechoをチェックすると、/var/log/syslogechoはExecStartPre実際にこれらの変数(パス)の値を元に戻します。あまりにもよくExecStartPre実行されました。 質問 docker-compose.yml.*実行中のカスタムファイルがあります。既存のコンテナを再起動/停止/起動する必要があります。docker-compose私が使用したいサービス命令を尋ねます。docker-compose.ymlそのディレクトリにcd、orWorkingDirectoryを直接使用できるようにする必要がありますdocker-compose start。 さまざまなdocker-composeコンテナセット(異なるフォルダ)の実行中のインスタンスが複数あるので、場所を指定できる「テンプレートシステム」ファイルを作成したいと思いますEnvironmentFile。 言い換えれば: Example = each of these have their own Docker containers... so I want to create different systemd services for these:
/docker/folder/docker-compose.yml
/docker/folder2/docker-compose.yml
質問 ここにいくつかの質問があります。 WorkingDirectory「環境変数」と一緒に使用できますか?そしてどのように使用できますか?ご覧のとおり、私はPassEnvironmentを使ってみました。しかし、環境ファイルがあります。私はよく理解していないようです実装するsystemd環境を設定する時間ですWorkingDirectory。これらのすべての「サービス」コマンドには静的定数値が必要なようです。 'cd' not found in path- これは変です。ただ簡単にできると思ったんです。ディレクトリの変更docker-compose.ymlを実行できるように、ファイルがある作業ディレクトリに移動しますdocker-compose start/restart/stop。 実際の用途は何ですかPassEnvironment? $(which docker-compose) ps最後に、例えば、試みはWorkingDirectory「一定値」を期待していたようだったので失敗しました。$(which docker-compose)代わりに静的位置を使用したかったのです。