GNU/Linux >> Znalost Linux >  >> Linux

Co může způsobit generování SIGHUP?

Signály lze odesílat pomocí kill utility nebo kill syscall. Samozřejmě můžete zkusit zjistit, kdo vysílá ten signál nebo odpojit vaše terminály nebo síťová připojení, ale existuje jednodušší praktický způsob, jak váš problém vyřešit.

Když má kód běžet jako démon, ale ve skutečnosti tomu tak není (stejně jako ten váš), existuje obal, který dokáže změnit jakýkoli program na démona. Překvapení - tento obal se nazývá daemon ! Má spoustu možností, pro vás pravděpodobně nejdůležitější, možnost automaticky restartovat váš nástroj, pokud by někdy z jakéhokoli důvodu zemřel.

Pokud tento příkaz není na vašem Ubuntu nainstalován, stačí sudo apt-get install daemon a man daemon abyste mohli začít.


O SIGHUP je třeba poznamenat několik věcí. Za prvé, jeho původ je z konceptu zavěšení, tj. ztráty spojení s konzolí přes něco jako modem. V moderním jazyce to obecně znamená, že ztratilo své kontrolní tty. Pokud jste se nepostarali o to, abyste se odpojili od svého tty, jakýkoli program spuštěný v daném terminálu obdrží při zavření terminálu SIGHUP. Podrobnosti o tom, jak to provést ve vašem programu, naleznete zde. Mezi další možnosti patří:

  • spuštění vašeho programu v screen nebo tmux
  • spusťte svůj program s nohup nebo nějaký jiný daemonizační framework

Druhou možností je, že něco záměrně posílá vašemu procesu SIGHUP, který se podle "tradice" často používá k signalizaci procesu, že by si měl znovu přečíst svou konfiguraci.


Linux
  1. může program číst vlastní elfí sekci?

  2. Příkaz Docker se nemůže připojit k démonu Docker

  3. Co dělat, když Ctrl + C nemůže zabít proces?

  1. Spustit skript/program při změně souboru

  2. Určete, zda je výstup stdout nebo stderr

  3. Mohu otestovat svou vlastní síť?

  1. Jak poznám, co roztáčí můj disk?

  2. Může mít proces vlastníka? Co to znamená?

  3. Co může způsobit signál 11?