Toon posts:

[bash] voorkom dat extern programma gestopt wordt door CtrlC

Pagina: 1
Acties:

  • Gertjan
  • Registratie: oktober 2001
  • Laatst online: 19-10 19:54

Gertjan

mmmm, beer...

Topicstarter
Ik heb een bashscript geschreven waarin ik een loop een aantal externe applicaties aanroep om taken te verrichten. Die taken kunnen lang duren, zoals rsync. Ik wil in mijn script een manier inbouwen om het script netjes te stoppen:
  1. eenmaal op Ctrl-C drukken geeft een boodschap en zet een variabele. De volgende iteratie in de loop wordt niet gestart
  2. nogmaals op Ctrl-C drukken stopt het script per direct
Dit is op zich met een trap vrij gemakkelijk voor elkaar te krijgen. Het probleem is nu echer, dat als een Ctrl-C gegeven wordt terwijl het script met rsync bezig is, eerst de trap aangeroepen wordt, maar dat direct daarna de Ctrl-C alsnog doorgestuurd wordt naar rsync, waardoor die er mee stopt.

Een voorbeeld zegt meer dan 1000 woorden:

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

i_should_exit=0

function asap_exit() {

        if [ $i_should_exit == 1 ]; then
                echo "second SIGINT caught, exit immediately"
                exit 1
        else
                echo "SIGINT caught, will exit after this loop. Give another SIGINT to exit immediately"
                i_should_exit=1
        fi
}


trap asap_exit SIGINT

while [ /bin/true ]; do

        echo "sleeping"
        /bin/sleep 20
        echo "done"

        [ $i_should_exit == 1 ] && exit 1
done


Ik wil dus eigenlijk voor elkaar krijgen dat de /bin/sleep afgemaakt wordt bij 1x Ctrl-C, waarna de volgende iteratie van de loop stopt, maar dat de /bin/sleep bij een tweede Ctrl-C wel afgebroken wordt.
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee