Ogni processo sarà elencato nell'output di ps aux; sia correndo, dormendo, zombi o fermato.
Tuttavia, nel tuo caso, poiché hai eseguito il processo utilizzando sh abc.sh, shè l'applicazione (shell) in esecuzione e non abc.sh. Pertanto, ps auxnon conterrà il processo a abc.shcausa del quale grepnon è stato possibile ottenere alcun risultato.
Quindi, il modo corretto che avresti dovuto usare è come:
ps aux | grep sh
Questo potrebbe anche restituirti altri processi che eseguono la stringa in shqualsiasi punto del loro output di ps aux.
Si noti che il processo sarà "in esecuzione" quando l'output di ps auxha il suo STATas R. Se è qualcosa di diverso da quello, non è in esecuzione nell'istanza in cui è stato attivato il comando per verificare i processi in esecuzione. I diversi stati del processo sono disponibili nella pagina man di ps:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
Puoi anche eseguire il topcomando per verificare se il processo è in esecuzione o inattivo e la quantità di CPU, RAM che sta consumando. (Questo elencherà nuovamente il processo come sh).
Tuttavia, se vuoi che il tuo processo sia elencato come abc.sh, allora dovresti avere la prima riga dello script che stai eseguendo come:
#!/bin/sh
in modo che la shell sappia quale applicazione utilizzare per eseguire lo script (sh in questo caso, cambiarlo in #!/bin/bashper bash) e quindi fornire autorizzazioni eseguibili al processo usando:
chmod +x /path/to/abc.sh
sostituendo /path/to/con il percorso del abc.shfile ed eseguirlo abc.shusando
/path/to/abc.sh
sostituendo nuovamente /path/to/con la posizione del abc.shfile.
S+significa stat