Häng kvar med nohup och screen

att starta ett jobb i terminalen och sedan upptäcka att det kommer att rulla längre än man tänkt kan vara stressande. I synnerhet strax innan fem en fredageftermiddag. Men det går att undvika problemet genom att starta programmet direkt på servern.

Kommandot ”nohup”, en förkortning för No Hang Up, är det enklaste sättet att köra något på servern och se till att det inte slutar att rulla när du loggar av. Du kör det helt enkelt genom att skicka med det du vill ha igång som ett argument:

nohup /sökväg/till/dinfil.sh

Knappar du in kommandot rakt upp och ner i terminalen kommer du inte få prompten tillbaka. Det beror på att ”nohup” inte skickar ditt kommando till bakgrunden. Det får du istället göra explicit med ett ”&” på slutet:

nohup /sökväg/till/dinfil.sh &

I retur kommer du att få processID:t och ett meddelande om i vilken loggfil eventuell utinformation lagras. Det förstnämnda kan vara bra om du senare måste döda processen hårt från en annan session.
Vill du inte bara köra ett jobb, utan arbeta löpande i den är det bättre att använda ”screen”. Denna applikation startar upp en session på maskinen du är uppkopplad mot och pluggar in din klientprocess till den. Oavsett vad som händer med din anslutning lever den uppstartade tråden på servern vidare tills någon dödar den. Detta innebär att du kan koppla ner och senare ansluta dig till samma fönster från en annan dator.

Att starta ”screen” är enkelt; du behöver egentligen bara mata in kommandot. Men det är oftast en god idé att namnge sessionen, vilket du gör med flaggan ”S”:

screen -S MacWorldFTW

Du kommer nu att hamna i ett nytt skal, som helt körs på servern. För dig blir det ingen skillnad. Allt du gör kommer att fungera precis som om du matade in kommandon i ett vanligt fönster.

När du tycker det är dags att koppla loss dig från sessionen utan att stoppa den får du kommunicera med själva ”screen”-programmet. Håll in ”ctrl” och tryck bokstaven ”a”. Sedan slår du ner ”d”, detach, för att komma ut ur ”screen”.

Att koppla upp sig igen är inga problem. Har du glömt vad du kallade din session kan du se alla rullande processer genom att lista dem:

screen -ls

Välj ut den du vill ansluta till och starta programmet med flaggan ”r”, för reconnect. Du kan skicka både processnumret och sessionsnamnet, till exempel MacWorldFTW, som argument:

screen -r <pid> eller <sessionsnamn>

Om du av någon anledning inte kopplar loss klienten normalt, utan den dör använder du flaggan ”-x” istället för ”-r”. Då tvingar du in dig i sessionen, oavsett om ”screen” att tror någon redan är ansluten till den. När du är färdig med en session avslutar du genom att logga ut på normalt sätt, genom att köra exit. Alternativt kan du klicka ”ctrl” och ”a”, följt av ”k” för kill. Det finns mycket mer att utforska i ”screen”, men de här enkla kommandona räcker för att kunna köra saker direkt på servern. Något du säkert kommer finna ovärderligt. Se bara till att du inte skapar mängder med processer som du sedan glömmer bort.

Sida 2 / 2

Innehållsförteckning