相対パスでデーモン systemd を介して dotnet core 実行可能ファイルを起動します。

相対パスでデーモン systemd を介して dotnet core 実行可能ファイルを起動します。

dotnet coreLinux ARM マシン用のWeb アプリケーションを開発し、公開しました。これを行うには、次のコマンドを実行します。

dotnet publish --runtime linux-arm -p:PublishSingleFile=true

結果として、次のディレクトリが生成されます。

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       10/03/2020      8:56                wwwroot
-a----       09/03/2020     10:54            162 appsettings.Development.json
-a----       09/03/2020     10:54            192 appsettings.json
-a----       10/03/2020      8:56      108097487 coremonitor
-a----       09/03/2020     12:59           7248 coremonitor.pdb
-a----       10/03/2020      8:56            474 web.config

実行可能ファイルはどこにcoremonitorありますか。このデータはサーバーに送信され、パスに保存されます/root/datalogger/linux-arm/。次に、これを起動するための systemd デーモンを作成しました。

[Unit]
Description=Data Logger Monitor Daemon

[Service]
ExecStart=./coremonitor
WorkingDirectory=/root/dataloggermonitor/linux-arm
User=dotnetuser
Group=dotnetuser
Restart=on-failure
SyslogIdentifier=DataLoggerMonitor-Service
PrivateTmp=true

[Install]
WantedBy=multi-user.target

再起動後、次の systemd ログ ( systemctl status dataloggermonitor) が表示されます。

● dataloggermonitor.service - Data Logger Monitor Daemon
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)

答え1

これは、パラメータに実行パスを直接入力することで修正されますExecStart。システムは、独自の相対パスから実行可能ファイルを起動します。

[Unit]
Description=Data Logger Monitor Daemon

[Service]
ExecStart=/root/dataloggermonitor/linux-arm/coremonitor
User=dotnetuser
Group=dotnetuser
Restart=on-failure
SyslogIdentifier=DataLoggerMonitor-Service
PrivateTmp=true

[Install]
WantedBy=multi-user.target

取得:

● dataloggermonitor.service - Data Logger Monitor Daemon
   Loaded: loaded (/etc/systemd/system/dataloggermonitor.service; enabled)
   Active: active (running) since Tue 2020-03-10 10:33:41 CET; 28s ago
 Main PID: 403 (coremonitor)
   CGroup: /system.slice/dataloggermonitor.service
           └─403 /root/dataloggermonitor/linux-arm/coremonitor

Mar 10 10:33:41 techbase systemd[1]: Starting Data Logger Monitor Daemon...
Mar 10 10:33:41 techbase systemd[1]: Started Data Logger Monitor Daemon.
Mar 10 10:34:01 techbase DataLoggerMonitor-Service[403]: Hosting environment: Production
Mar 10 10:34:01 techbase DataLoggerMonitor-Service[403]: Content root path: /var/tmp/.net/coremonitor/gcrmbwbh.wxk/
Mar 10 10:34:01 techbase DataLoggerMonitor-Service[403]: Now listening on: http://[::]:5000
Mar 10 10:34:01 techbase DataLoggerMonitor-Service[403]: Application started. Press Ctrl+C to shut down.

関連情報