Hi!
I’ve a cronjob that I don’t want to be concurrent but it needs to leave a long-running process after it does it’s job that I set up with a nohup command.
The deal is that once the script has setup the lock doesn’t get released so any further calls to the script just get ignored.
Is there a better alternative/flag I’d use? I couldn’t discern much from the flock or nohup man pages.
Solved: With bit more fiddling found the - u flag on the flock man page. You can unlock yourself at the very end of the script.
Could you just save the pid of that cronjob in a file? (Assuming this cronjob calls bash script). Before the next run of the cronjob check if that process with that pid is still running? Hoping, I understand your problem correctly. You do not want to run the cronjob again until the first run finishes?
Flock does this functionality, the deal is that it waited for the long-running process to end so it wouldn’t release the lock after the script was done. Adding a line manually releasing it fixed it.
It’s an auto-update script, you don’t wanna start a new update while one is underway.
Thanks for the update maybe I’m a bit oldschool and need to dig deeper “in the flock” ;-)
sorry fLock it my phone doesn’t like it and don’t really know what the f stands for. but flock is a Linux command that let’s you manage simple concurrency issues https://www.man7.org/linux/man-pages/man1/flock.1.html
the
f
stands for file. The c manpage has some details on how it works: https://www.man7.org/linux/man-pages/man2/flock.2.html