Použijte
Ctrl-Z
pozastavit aplikaci a vrátit se na příkazový řádek. Poté použijte
bg
aby proces mohl pokračovat na pozadí. Nakonec použijte
disown
Aby se proces neukončil, když odpojíte relaci a zavřete terminál.
Proces bude pokračovat, ale neexistuje způsob, jak se znovu připojit k terminálu a zobrazit výstup, o kterém vím, pokud se znovu připojíte k nové relaci.
Použijte reptyr
To je přesně případ man 1 reptyr výslovně uvádí:
reptyrje nástroj pro převzetí existujícího běžícího programu a jeho připojení k novému terminálu. Spustili jste dlouhotrvající proces přes ssh, ale musíte odejít a nechcete jej přerušovat? Stačí spustitscreen, použijtereptyrchytit to a pak zabít ssh relaci a jít domů.
(Příručka zmiňuje screen , můžete použít tmux místo toho podle toho, čemu dáváte přednost).
Nenechte si ujít tuto poznámku:
reptyrzávisí naptrace(2)systémové volání pro připojení ke vzdálenému programu. Na Ubuntu Maverick a vyšších je tato schopnost z bezpečnostních důvodů ve výchozím nastavení zakázána. Dočasně jej můžete povolit provedenímecho 0 > /proc/sys/kernel/yama/ptrace_scopejako root nebo trvale úpravou souboru
/etc/sysctl.d/10-ptrace.conf, který také obsahuje další informace o tomto nastavení.
Pokud soubor neexistuje, ale /etc/sysctl.d/ adresář ano, pak ho pravděpodobně stačí vytvořit s následujícím obsahem:
kernel.yama.ptrace_scope = 0
Nastavení se použije při příštím restartu. Viz bezpečnostní aspekty níže.
Základní použití
Základní použití je jednoduché:
reptyr PID
kde PID je PID procesu, který chcete připojit k novému terminálu. Poznámka reptyr pouze připojí proces k jinému terminálu. To neznamená, že se proces stane potomkem nového shellu.
Bezpečnostní aspekty
Nastavení ptrace_scope jako 0 se nedoporučuje.
S rostoucí popularitou Linuxu se stane větším cílem malwaru. Jednou obzvláště znepokojivou slabinou procesních rozhraní Linuxu je to, že jeden uživatel je schopen prozkoumat paměť a stav běhu kteréhokoli ze svých procesů. Pokud by byla například ohrožena jedna aplikace (např. Pidgin), bylo by možné, aby se útočník připojil k jiným běžícím procesům (např. Firefox, SSH relace, GPG agent atd.), aby extrahoval další přihlašovací údaje a nadále rozšiřoval rozsah svých útok bez použití phishingu za pomoci uživatele.
To není teoretický problém. Útoky na únos relací SSH (http://www.storm.net.nz/projects/7) a vložení libovolného kódu (http://c-skills.blogspot.com/2007/05/injectso.html) již existují a přetrvávají možné, pokud
ptracemůže fungovat jako dříve. Odptracenení běžně používán nevývojáři a správci, měli by mít tvůrci systému možnost zakázat tento systém ladění.[…]
Nastavení sysctl (lze zapisovat pouze pomocí
CAP_SYS_PTRACE) jsou:
0- klasickýptraceoprávnění:proces můžePTRACE_ATTACHna jakýkoli jiný proces běžící pod stejným uid, pokud je možné jej uložit […]
1- omezenoptrace:proces musí mít předem definovaný vztah s podřízeným, kterému chce volatPTRACE_ATTACHna. Ve výchozím nastavení je tento vztah vztahem pouze jeho potomků, pokud jsou také splněna výše uvedená klasická kritéria. […]
2- připojení pouze pro správce:pouze zpracovává sCAP_SYS_PTRACEmůže používatptracesPTRACE_ATTACHnebo prostřednictvím potomků volajícíchPTRACE_TRACEME.
3- bez připojení:žádné procesy nesmí používatptracesPTRACE_ATTACHani přesPTRACE_TRACEME. Jakmile je tato hodnota sysctl nastavena, nelze ji změnit.
Rozumný přístup je nastavit ptrace_scope na 2 a poté povolte reptyr použít ptrace :
echo 2 | sudo tee /proc/sys/kernel/yama/ptrace_scope
sudo setcap CAP_SYS_PTRACE+pe /usr/bin/reptyr
Nezapomeňte na soubor, který má trvalé nastavení.
Schopnosti jsou uloženy v inodu souboru. Proto nebudu překvapen, když reptyr ztratí schopnost, když je aktualizován (atomicky nahrazen novým spustitelným souborem).
Příkaz můžete zcela zrušit (v bash nebo zsh , případně další shelly) s disown příkaz. Příkaz však nemusí být spokojený, pokud vyžaduje tty, v takovém případě se podívejte na reptyr odpovědět.
$ ssh somecentos7system
-bash-4.2$ sleep 252727
^Z
[1]+ Stopped sleep 252727
-bash-4.2$ bg
[1]+ sleep 252727 &
-bash-4.2$ disown
-bash-4.2$ logout
Connection to somecentos7system closed.
$ ssh somecentos7system
-bash-4.2$ pgrep -lf 252727
20089 sleep
-bash-4.2$
Další možností je nechat relaci obrazovky (nebo tmux) automaticky spouštět, takže nemůžete zapomenout ji spustit, protože jedna pro vás již byla spuštěna, protože jste to tak nastavili. O tom, jak to udělat, jsou jiné příspěvky.