GNU/Linux >> Znalost Linux >  >> Ubuntu

Ubuntu – vytváření souborů jednotek v Ubuntu 16.04?

Tento soubor jednotky jsem vytvořil v /lib/systemd/system/menu-core-prices-update.service :

[Unit]
Description = core-price-update daemon
After network.target = auditd.service

[Service]
Type = forking
ExecStart = /usr/local/bin/start-menu-core-prices-update.sh
ExecStop =  /usr/local/bin/stop-menu-core-prices-update.sh
ExecReload = /usr/local/bin/reload-stop-menu-core-prices-update.sh

[Install]
WantedBy = multi-user.target

Z příkazového řádku mohu spustit:

$ /usr/local/bin/start-menu-core-prices-update.sh

a program se spustí správně. Ale když spustím démona:

$ sudo systemctl start menu-core-prices-update.service

Zobrazuje se mi tato chyba:

Jul 24 21:10:20 localhost systemd[13655]: menu-core-prices-update.service: Failed at step EXEC spawning /usr/local/bin/start-menu-core-prices-update.sh: Exec format error
-- Subject: Process /usr/local/bin/start-menu-core-prices-update.sh could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /usr/local/bin/start-menu-core-prices-update.sh could not be executed and failed.
-- 
-- The error number returned by this process is 8.
Jul 24 21:10:20 localhost systemd[1]: menu-core-prices-update.service: Control process exited, code=exited status=203
Jul 24 21:10:20 localhost systemd[1]: Failed to start core-price-update daemon.
-- Subject: Unit menu-core-prices-update.service has failed

Oprávnění:

-rwxr-xr-x 1 root root 87 Jul 24 20:27 /usr/local/bin/start-menu-core-prices-update.sh

Přijatá odpověď:

Problém č. 1

Našel jsem toto vlákno s názvem:[Vyřešeno] Přidejte vlastní skript do systemd, který má stejnou chybu jako váš výstup zobrazený výše, hlavně tento bit:

Selhalo v kroku spawnování EXEC /usr/local/bin/start-menu-core-prices-update.sh:Chyba formátu Exec

Tato chyba obecně znamená, že váš skript má jeden nebo více z těchto problémů:

  • Není spustitelný
  • Chybí shebang (#!/bin/bash )

Chcete-li to vyřešit, ujistěte se, že váš skript je spustitelný:

$ chmod a+x /usr/local/bin/start-menu-core-prices-update.sh

A nezapomeňte přidat shebang, #!/bin/bash nahoru.

Problém č. 2

Zdá se, že máte na tomto řádku překlep:

After network.target = auditd.service

Pravděpodobně by to mělo být toto:

After=network.target auditd.service

Problém č. 3

Není mi jasné, proč používáte Type = forking . Při použití tohoto typu jste ExecStart= je vyžadováno pro použití metody, která volá fork() . Předpokládáme také, že používáte PIDFile= možnost.

Očekával bych, že vaše Java aplikace bude fungovat dobře buď s simple nebo oneshot . Více o tom naleznete v těchto otázkách a odpovědích U&L s názvem:Forking ve skriptu systemd.


Ubuntu
  1. Jak najít soubory na Ubuntu?

  2. Jak zálohovat telefon Ubuntu?

  3. Najděte soubory, které jsou v balíčku v Ubuntu

  1. Jak spustit soubory .exe v Ubuntu?

  2. Jak získat přístup k souborům Ubuntu 11.04 ve Windows 7?

  3. Ubuntu vytváří nechtěný soubor Readme.md~?

  1. Jak unrar v Ubuntu

  2. Jak připojit Nexus 7 k přenosu souborů?

  3. Vytvoření virtuálního počítače Ubuntu k distribuci