GNU/Linux >> Znalost Linux >  >> Linux

Jak monitorovat nebo zabít proces, který spustil Cron?

Mám nějaké roboty, které spouští systémový plánovač v daném časovém intervalu. Ale někdy kvůli nějaké logické chybě musím tyto roboty zastavit ručně. Jak mohu najít tyto procesy spuštěné plánovačem a zabít je?

Přijatá odpověď:

Procesy můžete zabít podle jména. Například v systémech Linux, *BSD a Solaris pkill myprogram zabije všechny procesy, jejichž jméno obsahuje myprogram (použijte pkill '^myprogram$' pro přesnou shodu). Pokud jej spustíte jako uživatel bez oprávnění root, budou zabity pouze procesy tohoto uživatele a existují další možnosti kontroly shody (podrobnosti najdete v příručce k vašemu systému).

Pokud chcete konkrétně cílit na procesy spouštěné plánovačem a zabíjíte procesy ručně, můžete spustit ps f (pouze Linux) nebo pstree (pouze Linux) nebo ptree zobrazíte procesy ve stromu a uvidíte, které procesy spustil cron.

Pokud chcete mít možnost tyto procesy automaticky zabíjet domácí metodou, uložte je ID procesu do souboru. Tento druh souboru se nazývá pidfile, když se používá pouze k tomu, že běží pouze jedna instance procesu (což může nebo nemusí být něco, co chcete). Pokud chcete více instancí, uložte PID do samostatných souborů ve společném adresáři; zde je fragment shellu, který to dělá:

pid_dir=/var/run/myprogram # must have been created e.g. at boot time
myprogram &
pid_file=$pid_dir/$!.pid
touch "$pid_file"
wait
rm "$pid_file"

Lepším řešením, pokud máte tvrdá kritéria pro detekci běžících procesů, je použít obecný monitorovací program nebo v jednoduchých případech pouze omezit dobu, po kterou může proces běžet. Tyto odkazy vám mohou pomoci:

  • „Monit může spustit proces, pokud neběží, restartovat proces, pokud nereaguje, a zastavit proces, pokud využívá příliš mnoho zdrojů.“
  • Potřebuji pomoc s cronjobem, abych mohl sledovat utékající procesy a zabíjet je
  • Jak omezit využití prostředků, aby se ušetřil CPU+RAM pro určitý proces?
  • Existuje způsob, jak omezit množství paměti, kterou může konkrétní proces používat v Unixu?
Související:Debian – Kde Debian ukládá historii síťového připojení?
Linux
  1. Procesy zabíjení v Raspbianu

  2. Jak použít Ctrl+C k ukončení všech procesů na pozadí spuštěných ve skriptu Bash?

  3. Jak zjistím, zda byl můj server Linux napaden hackery?

  1. Jak zabít proces zombie na Linuxu

  2. Co jsou zombie procesy a jak najít a zabít zombie procesy?

  3. Který proces má Pid 0?

  1. Jak identifikovat proces, který nemá PID?

  2. Jak zabít běžící procesy v Linuxu

  3. Jak zabít všechny procesy s daným částečným názvem?