GNU/Linux >> Znalost Linux >  >> Ubuntu

Ponechat program Python i po odhlášení z relace Ssh?

Tato otázka zde již obsahuje odpovědi :Jak udržet procesy v chodu po ukončení relace ssh?

(14 odpovědí)
Uzavřeno před 3 lety.

I python skript s názvem scrape.py . Jak název napovídá, je to webový prohledávač a chci, aby na mém počítači se systémem Linux běžel nepřetržitě i poté, co se odhlásím a ukončím relaci ssh. Hodně jsem tu četl a bylo tu mnoho návrhů na použití nohup python scrape.py & . To fungovalo dobře, ale provádění skriptu se zastavilo, jakmile jsem se odhlásil. Také jsem prozkoumal supervisor aplikace, ale nemám oprávnění root, takže to také selže. Můžete mi doporučit způsob, jak tento problém vyřešit? Děkuji.

Nejlepší odpověď

Existuje několik přístupů (nástrojů a příkazů), které můžete použít pro podobný účel:

  1. Používejte terminálové emulátory jako tmux a screen :

    • tmux – terminálový multiplexor:umožňuje vytvořit řadu terminálů, přistupovat k nim a ovládat je z jedné obrazovky. tmux lze odpojit od obrazovky a pokračovat v běhu na pozadí a později znovu připojit. Příklady jeho základního použití jsou uvedeny zde a zde.

    • screen – správce obrazovky s emulací terminálu VT100/ANSI. Jedná se o celoobrazovkový správce oken, který multiplexuje fyzický terminál mezi několika procesy (typicky interaktivními shelly)… Programy pokračují v běhu, když jejich okno aktuálně není vidět, a dokonce i když je celá relace obrazovky odpojena od uživatelského terminálu. Příklad použití je uveden zde.

  2. Použijte oddělené příkazy prováděné na pozadí (čtěte také):

    • nohup – spustit příkaz imunní vůči zablokování s výstupem na jiný než tty; Spusťte COMMAND, ignorujte signály zavěšení. Běžná syntaxe pro posunutí příkazu na pozadí a jeho odpojení od aktuální relace shellu:nohup COMMAND & nebo nohup COMMAND >/dev/null 2>&1 & pokud chcete pozastavit informační soubor vytvořený nohup . Příklady jeho základního použití jsou uvedeny zde a zde. Zde je také ukázáno, jak jej používat pomocí příkazu ssh.

    • disown – podobně jako nohup ale je to shell (zsh, ksh, bash) zabudovaný; slouží k odstranění úloh z tabulky úloh nebo k označení úloh, aby jim nebyl poslán signál SIGHUP, pokud jej přijme nadřazený shell (např. když se uživatel odhlásí). Příklad použití je uveden zde.

    • setsid – vytvoří relaci a nastaví ID skupiny procesů. Ukázka použití setsid "COMMAND" . Další příklady zde.

  3. Použijte huponexit Možnost Bash:

    $ ./script.py > output.txt &
    [1] 7461
    $ shopt -s huponexit
    $ exit
    

    Reference:

    • Jak používat Bash's Job Control ke správě procesů na popředí a na pozadí v DigitalOcean
  4. Použijte správce plánů jako at a crontab :

    • at – provádět příkazy později; at a batch číst příkazy ze standardního vstupu nebo zadaného souboru, které mají být provedeny později, pomocí /bin/sh . Ukázkové použití:echo "COMMAND" | at now + 1 minute . Další příklady zde.

    • crontab – naplánovat pravidelnou práci na pozadí; je dobře známý pro jiné účely, ale můžete určit určitý časový okamžik, kdy bude váš příkaz proveden pouze jednou. Zde je k dispozici pěkná kalkulačka crontab.

  5. Vytvořte systémovou službu a spusťte ji, viz:

    • Jak spustím jeden příkaz při spuštění pomocí systemd?
    • Jak spouštět skripty při spuštění?
Související:Vyžaduje politika apt-cache sudo?
Ubuntu
  1. 5 způsobů, jak udržet vzdálené relace a procesy SSH spuštěné po odpojení

  2. 4 způsoby, jak udržet příkaz spuštěný poté, co se odhlásíte z relace SSH

  3. Jak zjistit ID procesu (pid) běžícího terminálového programu?

  1. Zabránit zabití aktuálně spuštěné linuxové úlohy po odhlášení z SSH

  2. Přestat sledovat výstup konkrétního programu po použití příkazu watch?

  3. SSH - Jak zahrnout příkaz -t do souboru ~/.ssh/config

  1. Ssh – Ponechat procesy spuštěné po odpojení relace Ssh?

  2. Ssh – Jak vytvořit proces, který zahájím během relace Ssh, která běží po skončení relace?

  3. Linux – Přestat sledovat výstup konkrétního programu po použití příkazu Watch?