[Chicago-talk] Determining if another perl process is running.
Richard Reina
gatorreina at gmail.com
Mon Nov 25 15:47:52 PST 2024
Gentlemen,
Thank you for the replies I ended up using pgrep in my crontab and it seems
to work well so far:
perl -e 'my $smstat = `pgrep -w "starman master"`; unless ($smstat &&
$smstat > 0) { system("XDG_RUNTIME_DIR=/run/user/1001 exec /home/starman/
starman.pl start &>> /home/starman/starman.log"); print localtime . "
starting starman\n"; } else { print "Starman is already running\n" }';
Is that okay?
El lun, 25 nov 2024 a las 9:41, Andy Bach (<Andy_Bach at wiwb.uscourts.gov>)
escribió:
> Need to expand your grep RE or add a grep -v to remove the ones you don't
> want, though, then you have to remove the one you just added. Another is
> to track the pids, find the ones you've created and look for one outside
> that set. You could have starman (if it doesn't) create a .pid file and
> use that to check that pid's status (with lsof -p <pid> maybe), rather than
> grepping.
> ------------------------------
> *From:* Chicago-talk <chicago-talk-bounces+andy_bach=
> wiwb.uscourts.gov at pm.org> on behalf of Richard Reina <gatorreina at gmail.com
> >
> *Sent:* Sunday, November 24, 2024 5:19 PM
> *To:* Chicago.pm chatter <chicago-talk at pm.org>
> *Subject:* [Chicago-talk] Determining if another perl process is running.
>
>
> *CAUTION - EXTERNAL: *
> Hello everyone,
>
> So excited about the Winter Perl Conference that I just registered for
> that I thought I would rebuild my aged Perl Dancer2 website. I 've done so
> and deployed it on a Digital Ocean droplet but I've hit a snag in setting
> up a cron job to make sure starman is running. It seems my query into
> whether the process is running gets treated as evidence that the process IS
> running.
>
> When I do:
>
> perl -e 'my $smstat = `ps -ef | grep starman`; unless ($smstat =~ /starman
> master/) { system("XDG_RUNTIME_DIR=/run/user/1001 exec /home/starman/
> starman.pl start &>> /home/starman/starman.log"); print localtime . "
> starting starman\n"; } else { print "Starman is already running\n\n\n
> $smstat\n" }';
>
> RESULTS IN:
>
> Starman is already running
>
>
> starman 203805 1 0 Nov08 ? 00:00:00 /lib/systemd/systemd
> --user
> starman 203806 203805 0 Nov08 ? 00:00:00 (sd-pam)
> root 472040 385 0 Nov20 ? 00:00:00 sshd: starman [priv]
> starman 472049 472040 0 Nov20 ? 00:00:01 sshd: starman at pts/0
> starman 472050 472049 0 Nov20 pts/0 00:00:00 -bash
> starman 544383 472050 0 23:11 pts/0 00:00:00 perl -e my $smstat =
> `ps -ef | grep starman`; unless ($smstat =~ /starman master/) {
> system("XDG_RUNTIME_DIR=/run/user/1001 exec /home/starman/starman.pl
> start &>> /home/starman/starman.log"); print localtime . " starting
> starman\n"; } else { print "Starman is already running\n\n\n $smstat\n" }
> starman 544384 544383 0 23:11 pts/0 00:00:00 sh -c ps -ef | grep
> starman
> starman 544385 544384 0 23:11 pts/0 00:00:00 ps -ef
> starman 544386 544384 0 23:11 pts/0 00:00:00 grep starman
>
> It always says it's running even if it is not apparently because it's
> seeing 'starman master/ in the perl script that is inquiring.
>
> Anyone know a good solution to avoid this so that I can determine whether
> my starman startup script is indeed running?
>
> *CAUTION - EXTERNAL EMAIL:* This email originated outside the Judiciary.
> Exercise caution when opening attachments or clicking on links.
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at pm.org
> https://mail.pm.org/mailman/listinfo/chicago-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/chicago-talk/attachments/20241125/41012bcc/attachment.html>
More information about the Chicago-talk
mailing list