Motivation

When automating tasks often the requirement comes up to retry commands, for example when network connections are involved and commands do not return successfully immediately or if resources are temporarily not available. Sometimes a simple for-loop in bash is sufficient. Sometimes it is necessary to use additional waiting between retries, sometimes timeouts are desired. Getting all those combinations right can be tedious and error-prone so a generic "retry" command should be available in usual environments so we should provide a retry command to openSUSE distributions.

Goals

  • G1: A "retry" command is submitted to openSUSE:Factory as part of a package

Execution

  • Research existing approaches and distributions
  • Package existing solution or develop alternative on your own
  • Submit package to a devel repository and then openSUSE:Factory and work on feedback

Results

Further details

There are some "best practices" like https://stackoverflow.com/questions/7449772/how-to-retry-a-command-in-bash and https://unix.stackexchange.com/questions/82598/how-do-i-write-a-retry-logic-in-script-to-keep-retrying-to-run-it-upto-5-times . There are also existing commands, like https://github.com/minfrin/retry but it seems to unmaintained and even fails to build so maybe https://github.com/okurz/scripts/blob/master/retry is a better start.

Looking for hackers with the skills:

linux retry bash github coreutils packaging

This project is part of:

Hack Week 21

Activity

  • over 2 years ago: cdywan liked this project.
  • over 2 years ago: fbonazzi liked this project.
  • over 2 years ago: maritawerner liked this project.
  • over 2 years ago: ph03nix liked this project.
  • over 2 years ago: okurz added keyword "bash" to this project.
  • over 2 years ago: okurz added keyword "github" to this project.
  • over 2 years ago: okurz added keyword "coreutils" to this project.
  • over 2 years ago: okurz added keyword "packaging" to this project.
  • over 2 years ago: okurz added keyword "linux" to this project.
  • over 2 years ago: okurz added keyword "retry" to this project.
  • over 2 years ago: okurz started this project.
  • over 2 years ago: okurz originated this project.

  • Comments

    • okurz
      over 2 years ago by okurz | Reply

      Couldn't wait until hackweek so made it a small weekend project :D Based on what I had in https://github.com/okurz/scripts/tree/master/retry I created https://github.com/okurz/retry including proper README, license, tests, CI, spec file for a package. An according package in OBS https://build.opensuse.org/package/show/home:okurz:retry/retry setup to be triggered from github following https://linuxkamarada.com/en/2019/03/19/integrating-the-open-build-service-with-github/

    • minfrin
      almost 2 years ago by minfrin | Reply

      While alternative implementations are great, please be careful with naming. The “retry” tool is already out the box in Debian, Ubuntu, and Nix, and in the queue for EPEL. It is currently available for Suse via copr. If you create a different tool with the same name but different command line options into opensuse it creates chaos for everyone.

      • okurz
        almost 2 years ago by okurz | Reply

        Thanks for the comment. I researched earlier if I could find existing solutions in various distributions and I had not found the applications you mentioned at that time. Regarding copr, do you mean https://software.opensuse.org/package/python-copr ?

    Similar Projects

    Explore simple and distro indipendent declarative Linux starting on Tumbleweed or Arch Linux by janvhs

    Description

    Inspired by [mkosi](https://g...


    Linux Security and Practice by r1chard-lyu

    Description

    This project focuses on discove...


    Contributing to Linux Kernel security by pperego

    Description

    A couple of weeks ago, I foun...


    toptop - a top clone written in Go by dshah

    Description

    toptop is a clone of Linux's ...


    Testing and adding GNU/Linux distributions on Uyuni by juliogonzalezgil

    Join the Gitter channel! [https://gitter.im/uy...


    Testing and adding GNU/Linux distributions on Uyuni by juliogonzalezgil

    Join the Gitter channel! [https://gitter.im/uy...


    Update Haskell ecosystem in Tumbleweed to GHC-9.10.x by psimons

    Description

    We are currently at GHC-9.8.x...


    Framework laptop integration by nkrapp

    Project Description

    Although openSUSE doe...


    Packaging Mu on OBS by joeyli

    Description

    Packaging Microsoft Mu project ...