2

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?

4
  • why not have your python program have a flag like --syslog, then pass that flag with the systemd service? Commented Apr 5, 2016 at 21:31
  • I can do that. I was just wondering if there's still a way to determine whether I'm in SystemD. Commented Apr 5, 2016 at 21:35
  • ps -q 1 -o comm=... Commented Apr 5, 2016 at 21:43
  • serverfault.com/questions/926349/… Commented Nov 17, 2019 at 16:51

1 Answer 1

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.

3
  • Won't init also be pid 1? Commented Apr 5, 2016 at 21:46
  • @JeffSchaller hence the reason I recommend the command line flag Commented Apr 5, 2016 at 21:47
  • Not working for me. Commented Nov 17, 2019 at 16:51

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.