Detect and restart hanging programs with Go

Do Not Pass Go!

If you want the process of restarting stalled programs to be particularly effective, supervised programs should be able to pick up where they left off instead of starting over. Rsync, for example, checks in --append mode whether a file of the same name from a previous, aborted transfer attempt already exists on the target machine and fast-forwards the transfer accordingly if it finds itself in such a situation.

In the call

$ rsync -avP --append file

the -a (archive) option pushes a specified file to the server, while -v turns on verbose mode, and -P is short for --partial --progress. In this mode, rsync keeps partial files on the target server if the transfer was interrupted, and --progress shows the progress every second.

When called with

yoyo /usr/local/bin/rsync -avP ...

yoyo monitors the rsync process to see if it keeps on generating output. If nothing is happening, say, because the server is taking a power nap, yoyo aborts rsync and restarts it without further ado, resuming any unfinished business.

Note that yoyo expects the full path to the monitored program in the call and does not search the $PATH for it, unlike the shell. This is exactly what the doctor ordered, letting machines do what they do best and allowing humans to focus on creative work, thanks to automation.

The Author

Mike Schilli works as a software engineer in the San Francisco Bay Area, California. Each month in his column, which has been running since 1997, he researches practical applications of various programming languages. If you email him at he will gladly answer any questions.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Command Line: Processes

    Innumerable processes may be running on your Linux system. We’ll show you how to halt, continue, or kill tasks, and we’ll examine how to send the remnants of crashed programs to the happy hunting grounds.

  • Command Line: Process Control

    What is happening on your Linux machine? Various shell commands give you details about system processes and help you control them.

  • Elixir 1.0

    Developers will appreciate Elixir's ability to build distributed, fault-tolerant, and scalable applications.

  • System Monitoring Center

    The System Monitoring Center combines all the important information you need to monitor a computer in a single state-of-the-art interface.

  • Fsniper

    Every day, computers are inundated with hundreds of files. Fsniper welcomes the new arrivals and processes them according to rules that you define.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More