Ich habe eine Webanwendung dotnet core
für einen Linux-ARM-Rechner entwickelt und veröffentlicht. Dazu wurde der folgende Befehl ausgeführt:
dotnet publish --runtime linux-arm -p:PublishSingleFile=true
Und als Ergebnis erhält man das Verzeichnis:
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
Wo coremonitor
befindet sich die ausführbare Datei. Diese Daten werden an den Server gesendet und im Pfad gespeichert /root/datalogger/linux-arm/
. Anschließend haben wir den systemd-Daemon erstellt, um sie zu starten:
[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
Nach dem Neustart erhalte ich folgendes systemd-Log ( systemctl status dataloggermonitor
):
● dataloggermonitor.service - Data Logger Monitor Daemon
Loaded: error (Reason: Invalid argument)
Active: inactive (dead)
Antwort1
Dies wird behoben, indem der Ausführungspfad direkt in den ExecStart
Parameter eingegeben wird. Das System startet die ausführbare Datei von seinem eigenen relativen Pfad aus:
[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
Bekommen:
● 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.