Hi Martin,
no changes for 5.35.0 and 5.35.2
Kacper
W dniu 22.10.2025 o 13:05, [email protected] pisze:
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