Hi Kacper,

it looks like a problem which was fixed in monit 5.35.0: The pidfile may 
contain a PID from the previous system boot, which belongs to a thread of 
different process after reboot.

Please can you upgrade monit? (5.35.2 recommended)

Best regards,
Martin



> On 22. 10. 2025, at 10:54, [email protected] wrote:
> 
> Hi guys, 
> I have a problem with the monit daemon on my ARM system. Once every 5-6 times 
> when I'm restarting the whole system, it happens that the screen process 
> controlled by monit fails to start. I do not understand why. In monit logs or 
> in system logs, there is no helpful information. Additionally, when monit 
> claims that the process fails (and unmonitors it), I can see the proper 
> screen process with a correct pid file available on the system. When I 
> manually press "start service" in monit web gui, the correct process is found 
> by monit. My monit version is 5.34.3.
> 
> I also do not understand how fast monit claims that the process fails to 
> start and unmonitors it (in monit logs look like it takes 1-2 sec while 
> timeout in monitrc for this process is 10 seconds).
> 
> monitrc file:
> set daemon 20
> set onreboot start
> set log /var/log/monit.log
> 
> check process screenprocess with pidfile /var/run/screenprocess.pid
>     if not exist then start
>     start program = "/etc/init.d/screenprocess start" with timeout 10 seconds
>     stop program = "/etc/init.d/screenprocess stop" with timeout 10 seconds
>     if 5 restarts within 5 cycles then unmonitor
> 
> screenprocess init.d script:
> 
> #!/bin/sh
> 
> PIDFILE=/var/run/screenprocess.pid
> SCREEN_PATH=/tmp/screen
> 
> case "$1" in
>   start)
>     logger -t screenprocess "Starting ioc"
>     echo "Starting ioc"
>     if [ -f "$PIDFILE" ]; then
>       logger -t screenprocess "Screen process is already running."
>       echo "Screen process is already running."
>       exit 1
>     fi
>     # create dir for screen socket files
>     mkdir -p $SCREEN_PATH
>     chmod 700 $SCREEN_PATH
>     export SCREENDIR=$SCREEN_PATH
>     # set stack limit
>     ulimit -s 1024
>     # run screen
>     screen -c /etc/screenprocesslogs.conf -dmSL screenprocess ./start.cmd && 
> sleep 1
>     # get pid of screen
>     screen -ls | grep -oE "[0-9]+\.screenprocess" | sed -e "s/\..*$//g" | 
> tail -n 1 > $PIDFILE
>     if [ -f "$PIDFILE" ]; then
>       NUM_PIDS=$(grep -E '^[0-9]+$' "$PIDFILE" | wc -l)
>       # check if only one screen session is active
>       if [ $NUM_PIDS -eq 1 ]; then
>         logger -t screenprocess "Screen process started successfully."
>         echo "Screen process started successfully."
>       else
>         logger -t screenprocess "Failed to start Screen process. Multiple 
> PIDs or none detected"
>         echo "Failed to start Screen process. Multiple PIDs or none detected"
>         exit 1
>       fi
>     else
>       logger -t screenprocess "Failed to start Screen process. PID file 
> $PIDFILE not created"
>       echo "Failed to start Screen process. PID file $PIDFILE not created"
>       exit 1
>     fi
>     ;;
> 
> 
> Logs from monit:
> [2025-10-22T08:27:22+0000] debug    : pidfile '/var/run/screenprocess.pid' 
> does not exist
> [2025-10-22T08:27:22+0000] error    : 'screenprocess' process is not running
> [2025-10-22T08:27:22+0000] debug    : 
> -------------------------------------------------------------------------------
> [2025-10-22T08:27:22+0000] debug    : 
> -------------------------------------------------------------------------------
> [2025-10-22T08:27:22+0000] debug    : pidfile '/var/run/screenprocess.pid' 
> does not exist
> [2025-10-22T08:27:22+0000] info     : 'screenprocess' start: 
> '/etc/init.d/screenprocess start'
> [2025-10-22T08:27:22+0000] info     : 'mgmt' start on user request
> [2025-10-22T08:27:22+0000] info     : 'screenprocess' start on user request
> [2025-10-22T08:27:22+0000] info     : Monit daemon with PID 251 awakened
> [2025-10-22T08:27:23+0000] debug    : Starting screen process
> screen process started successfully.
> [2025-10-22T08:27:24+0000] error    : 'screenprocess' service restarted 5 
> times within 5 cycles(s) - unmonitor
> 
> I'd be grateful for any tips on what can be wrong.
> 
> Cheers
> 
> Kacper
> 
> 
> 

Reply via email to