Puncte:0

Nu opriți scriptul de la distanță când procesul apelantului local este ucis

drapel mg

Problemă

Eu apelez la un proces de lungă durată prin ssh. Și este necesar ca acest proces să nu fie ucis. Utilizatorul poate ucide procesul inițial de pe gazda sa și eu nu pot face nimic în acest sens.

Cum se face ca procesul de la distanță să nu fie ucis dacă procesul inițial este ucis?

User -> user.sh -> SSH-to-remote -> long-running.sh

Trebuie:

  1. Emite ieșirea procesului de la distanță
  2. Ieșiți când procesul de la distanță iese
  3. Nu omorâți procesul de la distanță, dacă procesul inițial va fi ucis
  4. Faceți disponibil un fișier jurnal de ieșire

Prima soluție incompletă

M-am gândit la ceva folosind nohup, dar nu a funcționat până acum:

User -> user.sh -> SSH-to-remote -> init.sh -> long-running.sh

init.sh

#!/bin/bash
nohup ./long-running.sh >out.log 2>&1 </dev/null &
pid=$!
neagă $pid
tail -f out.log &
așteptați $pid

long-running.sh (conținut pentru testare)

#!/bin/bash
pentru i în $ (sev. 30)
do 
    eco $i
    somn 1
Terminat

Această soluție nu rezolvă 2. Nu iese atunci când procesul de la distanță iese.

kanehekili avatar
drapel zw
Folosesc fie [tmux](https://man7.org/linux/man-pages/man1/tmux.1.html) fie systemctl. Acesta din urmă are nevoie de un fișier de service mic [exemplu](https://askubuntu.com/a/1336578/906933) pentru a fi scris.
Puncte:0
drapel mg

Se pare că am găsit o soluție.

init.sh

#!/bin/bash
nohup ./long-running.sh >out.log 2>&1 </dev/null &
pid=$!
neagă $pid
coada --pid=$pid -f out.log

În prima mea soluție aștepta nu a așteptat ca neagă a eliminat specificația de lucru. coadă a alergat pentru totdeauna și a ținut sesiunea deschisă.

Acum aștepta a fost îndepărtat și coadă așteaptă ca procesul să iasă. O ucidere de la gazda sursă ucide coada, dar nu ucide procesul de lungă durată.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.