Hvordan kan SSH bruges til at køre en kommando på en Unix-maskine og afslutte, før kommandoen er færdig? For eksempel hænger SSH på terminalen, indtil "sleep" er færdig, selvom "sleep" kører i baggrunden, når der skrives:
ssh localhost 'sleep 60 &'
For at SSH kan bruges til at køre en kommando på en Unix-maskine og afslutte, før kommandoen er færdig, kan du benytte "nohup", redirigering af output, "disown" eller en kombination af "nohup" og redirigering.
Hvordan kan SSH bruges til at køre en kommando på en Unix-maskine og afslutte, før kommandoen er færdig?
For at SSH kan bruges til at køre en kommando på en Unix-maskine og afslutte, før kommandoen er færdig, kan du benytte følgende metoder:
- Brug af "nohup" kommandoen: "nohup" står for "no hang up" og kan bruges til at køre en kommando, der fortsætter med at køre, selv efter at SSH-sessionen er afsluttet.
ssh user@host 'nohup sleep 60 &'
- Redirigering af output: Rediriger både standard output (stdout) og standard error (stderr) til /dev/null for at sikre, at SSH-sessionen ikke hænger på output.
ssh user@host 'sleep 60 > /dev/null 2>&1 &'
- Brug af "disown" kommandoen: Efter at have startet kommandoen i baggrunden, kan du bruge "disown" til at fjerne jobbet fra shell's jobtabeller.
ssh user@host 'sleep 60 & disown'
- Kombination af "nohup" og redirigering: For at være helt sikker på, at kommandoen kører uafhængigt af SSH-sessionen, kan du kombinere "nohup" med redirigering af output.
ssh user@host 'nohup sleep 60 > /dev/null 2>&1 &'
Ved at bruge en af disse metoder kan du sikre, at SSH-sessionen afsluttes med det samme, mens kommandoen fortsætter med at køre i baggrunden på den eksterne maskine.