Edit: Saatan olla jäljillä, näyttää hieman että ssd tunnistaa vain käännetyn koodin, ei tulkattavaa. Teinpä kokeeksi ikuisen silmukan joka ajaa "nop" -käskyä:
#!/bin/bash
while :
do
:
done
Joo, tutkin hieman tuon start-stop-daemonin manuaalisivua, ja näyttää siltä että olet todellakin oikeilla jäljillä.
Tein itselleni myös samanlaisen bash-skriptin joka ei tee mitään (paitsi että minun skriptini tekee silmukassa sleep komennon jotta ei turhaan käytetä suoritinta), ja laitoin sen pyörimään. Minun skriptini sai prosessinumeron 2982.
Ssd:n manuaalissa sanotaan tuosta --exec valitsimesta näin:
-x, --exec executable
Check for processes that are instances of this executable
(according to /proc/pid/exe).
Eli se katsoo tuonne /proc/2982/exe tiedostoon ja katsoo mikä siellä pyörii. Nyt jos ls komennolla katsotaan mitä sieltä löytyy niin nähdään seuraavaa:
tommi@tommi-desktop64:~$ ls -l /proc/2982/exe
lrwxrwxrwx 1 tommi tommi 0 heinä 25 17:11 /proc/2982/exe -> /bin/bash
Eli se onkin /bin/bash joka siellä pyörii, eikä ohjelma nimeltä testi.sh jonka olin luonut.
Mutta — ssd:n manuaalisivua tutkimalla huomaamme että on toinenkin valitsin:
-n, --name process-name
Check for processes with the name process-name (according to
/proc/pid/stat).
Tämä name valitsin siis katsoo /proc/2982/stat tiedostoa, ja jos katsomme mitä sieltä löytyy niin löydämme seuraavaa:
tommi@tommi-desktop64:~$ cat /proc/2982/stat
2982 (testi.sh) S 2822 2982 2822 34816 3404 4202496 5539 58106 0 0 4 20 2 13 20 0 1 0 128248 13873152 341 18446744073709551615 4194304 5110396 140736121151904 140736121150080 140725522402366 0 65536 4 65538 18446744071579283524 0 0 17 0 0 0 0 0 0
Sieltä siis löytyy tuo testi.sh joka on ohjelmani nimi.
Näiden tutkimusten perusteella vaikuttaisi siis siltä että oikea komento tuolle start-stop-daemonille olisi suunnilleen seuraavanlainen:
sudo start-stop-daemon --start --startas /usr/local/bin/auto_dld --pidfile /var/run/auto_dld.pid --name auto_dld --test
Eli --exec valitsimen sijaan käytetään --startas valitsinta kertomaan mikä komento suoritetaan, ja --name valitsinta kertomaan mikä nimi ohjelmalla on kun se on käynnissä.