Systemd cant start my script


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Systemd cant start my script
# 1  
Old 07-17-2019
Systemd cant start my script

Hi,
systemd cant start my script, but it work, at command prompt.
Code and execute at command prompt
Code:
#cat collector.sh
#!/bin/bash
case $1 in
        start)
        /home/postgres/scripts/pgwatch2/pgwatch2.sh
        /home/postgres/scripts/pgwatch2/pgwatch2_UI.sh
        ;;
        stop)
        kill -9 `cat  /home/postgres/scripts/pgwatch2/pgwatch2_UI.PID`; rm -f /home/postgres/scripts/pgwatch2/pgwatch2_UI.PID
        kill -9 `cat /home/postgres/scripts/pgwatch2/pgwatch2.PID` ; rm -f /home/postgres/scripts/pgwatch2/pgwatch2.PID
        ;;
        *)
        echo "Usage:  collector.sh start|stop"
        exit 1
esac


#  ./collector.sh start; sleep 3; for PID in `cat *.PID`; do ps -fp $PID;  done;
UID         PID   PPID  C STIME TTY          TIME CMD
postgres 120535      1  2 19:30 pts/1    00:00:00 /opt/app/pgwatch2/pgwatch2-master/pgwatch2/pgwatch2
UID         PID   PPID  C STIME TTY          TIME CMD
postgres 120537      1 21 19:30 pts/1    00:00:00 /bin/python3.6 /opt/app/pgwatch2/pgwatch2-master/webpy/web.py

#cat /home/postgres/scripts/pgwatch2/pgwatch2.sh
#!/bin/bash
. $HOME/.pgprofile_pgwatch2
/opt/app/pgwatch2/pgwatch2-master/pgwatch2/pgwatch2 >> /home/postgres/scripts/pgwatch2/pgwatch2.log 2>&1 &
echo $! > /home/postgres/scripts/pgwatch2/pgwatch2.PID

#cat /home/postgres/scripts/pgwatch2/pgwatch2_UI.sh
#!/bin/bash
. $HOME/.pgprofile_pgwatch2
/bin/python3.6 /opt/app/pgwatch2/pgwatch2-master/webpy/web.py >> /home/postgres/scripts/pgwatch2/pgwatch2_UI.log 2>&1  &
echo $! > /home/postgres/scripts/pgwatch2/pgwatch2_UI.PID

systemd service and start output
Code:
#cat collector.service
[Unit]
Description=Pgwatch2 Gathering Daemon

[Service]
User=postgres
Group=postgres
Type=notify
ExecStart=/home/postgres/scripts/pgwatch2/collector.sh start
[Install]
WantedBy=multi-user.target


# systemctl start collector.service
# systemctl status collector
- collector.service - Pgwatch2 Gathering Daemon
   Loaded: loaded (/etc/systemd/system/collector.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2019-07-17 19:28:09 EEST; 6s ago
  Process: 120324 ExecStart=/home/postgres/scripts/pgwatch2/collector.sh start (code=exited, status=          0/SUCCESS)
 Main PID: 120324 (code=exited, status=0/SUCCESS)

Jul 17 19:28:09 pgwatch2db.estpak.ee systemd[1]: Starting Pgwatch2 Gathering Daemon...
Jul 17 19:28:09 pgwatch2db.estpak.ee systemd[1]: Started Pgwatch2 Gathering Daemon.

# journalctl -f -u collector

...
Jul 17 19:28:09 pgwatch2db.estpak.ee systemd[1]: Starting Pgwatch2 Gathering Daemon...
Jul 17 19:28:09 pgwatch2db.estpak.ee systemd[1]: Started Pgwatch2 Gathering Daemon.

Why systemd does not like my code?
thnx
br
Kaido
# 2  
Old 07-17-2019
I think systemd considers it dead because the scripts run in background, and the foreground process quits. systemd would do its own tracking of PIDs. At the least you'd need to inform systemd what PID represents the live daemon.

For example, see this systemd service example. The 'service' is a script which loops continually, running in the foreground.

Last edited by Corona688; 07-17-2019 at 02:08 PM..
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 07-17-2019
systemd-cat is probably your suggestion
br
Kaido

--- Post updated at 22:03 ---

@Corona688 I can't figure out how to use it.
br
Kaido

Last edited by kvaikla; 07-17-2019 at 02:33 PM..
# 4  
Old 07-17-2019
Something like
Code:
# config for systemd
...
ExecStart=/path/to/collector2.sh
...

where collector2.sh is
Code:
#!/bin/bash

. $HOME/.pgprofile_pgwatch2
# Redirect standard output into logfile
exec >> /home/postgres/scripts/pgwatch2/pgwatch2.log
# Redirect standard error into logfile
exec 2>&1
# Run program with these outputs and the exact same PID we started with so systemd can track it
exec /opt/app/pgwatch2/pgwatch2-master/pgwatch2/pgwatch2

And the UI service would be a separate service like

Code:
# config for systemd
...
ExecStart=/path/to/collector2-ui.sh
...

and collector2-ui.sh would look like:

Code:
#!/bin/bash
. $HOME/.pgprofile_pgwatch2
# Save stdout to log file
exec >> /home/postgres/scripts/pgwatch2/pgwatch2_UI.log
# Redirect stderr to log file
exec 2>&1
# Run python with the exact same PID we started with, so that systemd can track it
exec /bin/python3.6 /opt/app/pgwatch2/pgwatch2-master/webpy/web.py

Both of these programs don't go into the background or save PID files - when you run things with systemd, that's systemd's job.
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 07-17-2019
I got a point:
"Both of these programs don't go into the background or save PID files - when you run things with systemd, that's systemd's job.
br
Kaido
# 6  
Old 07-18-2019
I've had a few problems with systemd and a very simple start/stop script too. I was asked to set something that that was not a true service to run at boot time. After much testing and tracing, the problem I had was that systemd would run the start and then run the stop. Weird, but that's what it seemed to do. I got past this by adding a RemainAfterExit=yes clause in my service definition file.

The whole thing in /etc/systemd/system/robin.service (okay I changed the name) is pasted below:
Code:
[Unit]
Description=Robin service daemon
Wants=network.service

[Service]
Type=simple
User=robin_srv
ExecStart=/usr/local/scripts/robin-service.sh start
ExecStop=/usr/local/scripts/robin-service.sh  stop
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

After that it is a start/stop script much like to have that is being called.


Does that help?



Kind regards,
Robin
This User Gave Thanks to rbatte1 For This Post:
# 7  
Old 07-18-2019
Hi rbatte1
I will test your example
br
Kaido
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

I can not understand the command from the systemd?

journalctl --since "tomorrow" By idea to show magazines from tomorrow. As it is illogical. Tell me what is the essence of the team with the key tomorrow? Code tags please (1 Reply)
Discussion started by: alekseev
1 Replies

2. Shell Programming and Scripting

Have troubles with bash script: xubuntu systemd.link onboard

Hey there. I'm new in write bash scripts in fact this is my first one so please be patient ;). Also english is not my native language but i hope you understand me anyway. I installed xubuntu on my mothers laptop and every time a new version update gets installed the keyboard doesn't work... (9 Replies)
Discussion started by: Apop85
9 Replies

3. Linux

CentOS7 systemd-timer

hi moring everyone, i has used systemd-timer running the task, i set every 5 second execute 1 times,but the systemd-timer don't by that also random times execute. what's reason. testest.timer configure ------------------------------------------------------------------------ ... (2 Replies)
Discussion started by: shean
2 Replies

4. Red Hat

Stdin during rhel 7 bootup (systemd)

Hi All, I had a startup script (rc3.d/S01getinput) which will accept user inputs during the boot up in console. Basically it will prompt for input. It was working fine in RHEL6. Now I have migrated to RHEL 7 and script gets executed as part of the boot up process. But it does not... (1 Reply)
Discussion started by: kalpeer
1 Replies

5. SuSE

Starting mgetty with systemd?

Hello All, OS: openSUSE 13.1 (Bottle) (armv7hl) uname -a: Linux linux.site 3.14.14-cubox-i #1 SMP Sat Sep 13 03:48:24 UTC 2014 armv7l armv7l armv7l GNU/Linux So this is my first attempt at starting a service at boot with systemd. I've done this with inittab in the past, but I'm having... (0 Replies)
Discussion started by: mrm5102
0 Replies

6. UNIX for Advanced & Expert Users

Systemd

Hallo I don't know where to put my question so I put it here. I want that systemd let run a script but only on shutdown or reboot and before the system umount the mounted devices. I look on google but only a little information is found and not working Until no, I don't find an solution for... (1 Reply)
Discussion started by: thailand
1 Replies

7. Linux

Systemd hibernation is killing me

I'm on Arch and I have a strange issue with systemctl hibernate command. It hibernates and resumes just fine (I have TuxOnIce), but in the last stage of resume, it completely shuts down my laptop screen, so I cannot see anything even though I know the system resumed just fined and the desktop is... (1 Reply)
Discussion started by: lockheed
1 Replies

8. UNIX for Advanced & Expert Users

Systemd

I am writing a program that must determine certain things about services. How can I, or my program, determine which services are started automatically when a given target becomes active. It is my impression that just looking in the target's .wants directory is inadequate because of other... (2 Replies)
Discussion started by: Brandon9000
2 Replies

9. What is on Your Mind?

Linux systemd - Is it really required?

I was testing Fedora 16 mostly to check the new features. One thing that caught my eye as a systems admin is the systemd which is incorporated in Fedora for quite a while now. From the first look of it, this appears more close to Solaris's SMF. With parallelization capabilities, advanced... (0 Replies)
Discussion started by: admin_xor
0 Replies
Login or Register to Ask a Question