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?
1 Answer
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.
- Won't init also be pid 1?2016-04-05 21:46:45 +00:00Commented Apr 5, 2016 at 21:46
- @JeffSchaller hence the reason I recommend the command line flaguser530873– user5308732016-04-05 21:47:47 +00:00Commented Apr 5, 2016 at 21:47
-
--syslog, then pass that flag with thesystemdservice?ps -q 1 -o comm=...