I have a Python service in systemd. I'd like to have it use the Python syslog module for logging if it's running in systemd vs. otherwise. Is there a reliable way to determine if I'm running in systemd or is there a better way of going about it?
Asked
Active
Viewed 1,458 times
2
jasonwryan
- 71,734
- 34
- 193
- 226
Naftuli Kay
- 38,686
- 85
- 220
- 311
-
why not have your python program have a flag like `--syslog`, then pass that flag with the `systemd` service? – user530873 Apr 05 '16 at 21:31
-
I can do that. I was just wondering if there's still a way to determine whether I'm in SystemD. – Naftuli Kay Apr 05 '16 at 21:35
-
`ps -q 1 -o comm=`... – jasonwryan Apr 05 '16 at 21:43
-
https://serverfault.com/questions/926349/systemd-tell-if-script-was-run-by-systemd-or-by-user – gavv Nov 17 '19 at 16:51
1 Answers
2
systemd will always have a PID of 1, so you can check if the parent PID is 1:
import psutil, os
if psutil.Process(os.getpid()).ppid() == 1:
# We are using systemd
However, it's probally better to offer a command line flag --syslog and pass that with the systemd service, this way the user can select to use syslog even without the systemd service.
user530873
- 257
- 1
- 8