Interactief > Andere distributies

bash: laat proces doorgaan nadat de terminal sluit [Solved]

(1/3) > >>

peer:
Ik gebruik een startscript om windscribe vpn op te starten en en stopscript om windscribe vpn te stoppen.
Aan het einde van het startscript plaats ik een icon in de system-tray als volgt:

--- Code: ---# icon in system tray aanzetten
file="/home/peer/Scripts/windscribe/pidofyad.txt"
(yad --notification \
    --image="network-wireless-hotspot-symbolic" \
    --command="clicked=true'") &
jobs -l
disown -h %1       
--- Einde van code ---
Dit werkt prima, echter wanneer de terminal gesloten wordt verdwijnt ook de icon uit de systray. En het is juist de bedoeling dat de icon zichtbaar blijft totdat ik het stopscript start.
Met google heb ik gevonden dat ik het commando disown moet gebruiken maar ik krijg het niet werkend.
de parameter -h moet ervoor zorgen dat dhet proces doorloopt als de terminal gesloten wordt en de %1 verwijst naar het jobnumber (er is hier maar één job).
Ik heb het ook geprobeerd met het commando nohub maar dan wordt de icon niet weergegeven.

Doe ik iets niet goed of gaat dit gewoon niet werken?????? 

MKe:
Je hebt ook het nohub commando. Een andere manier om een shell open te houden terwijl je de window sluit is m.b.v screen of tmux.


Edit: niet goed gelezen, je had nohub al geprobeerd. Als ik jou was zou ik me eens inlezen in gnu-screen. Je kan daar heel veel mee en een van de dingen is dit.

Een nog betere oplossing lijkt me om een systemd script te maken. Waarom doe je dat niet?

peer:
gnuscreen heb ik even naar gekeken maar loop ik nog niet warm voor. Het moet toch gewoon kunnen in bash??
Een systemd script heb ik nog nooit gemaakt maar het lijkt een mooie oplossing te zijn als ik mijn vpn altijd aan wil hebben maar dat is niet zo. Soms wil ik de vpn aanzetten maar soms ook niet.

Er moet iets mis zijn in mijn script waardoor het niet lukt. Momenteel had ik de haakjes om het yad-commando nodig om het naar de achtergrond te kunnen verplaatsen. Misschien werk het niet door de haakjes. Morgen maar eens het hele commando op één regel plaatsen.

Een alternatief is om naast een startscript en een stopscript ook een monitorscript te maken, waar het yad-command in zit.
Of gewoon één script dat alles doet. Kan ook, maar dan heb ik altijd een terminal openstaan

MKe:
Het kan niet “gewoon in bash” aangezien een process wordt afgesloten als het parent process (lees terminal window) wordt afgesloten. Nohup kan je process los maken van dat parent process. Screen houdt een terminal proces verborgen in stand.  Het is een zeer gebruikelijke methode om te doen wat jij hier wilt. Systemd is wel degelijk geschikt. Je kunt daar namelijk gewoon processen mee starten en stoppen. Dat hoeven dus geen processen te zijn die automatisch starten.  Bijkomend voordeel is dat systemd je proces monitored en eventueel herstart als het gecrashed is.

MKe:
Ik zat nog eens te denken. DVTM had een aparte sessie manager die best goed werkte, abduco http://manpages.ubuntu.com/manpages/xenial/en/man1/abduco.1.html. Omdat DVTM de succless filesofie aanhangt kun je deze tool los installeren zonder alle dependency meuk. Misschien is dat wat je zoekt?

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie