Каждый процесс будет указан в выходных данных ps aux
; будь то бегущий, спящий, зомби или остановившийся.
Однако в вашем случае, поскольку вы запустили процесс с помощью sh abc.sh
, sh
является ли приложение (оболочка) запущенным, а не abc.sh
. Следовательно, ps aux
не будет содержать процесс abc.sh
из-за чего grep
не смог дать никакого результата.
Итак, правильный способ, которым вы должны были его использовать, - это:
ps aux | grep sh
Это также может вернуть вам другой запущенный процесс, имеющий строку sh
где-либо в их выводе из ps aux
.
Вы должны отметить, что процесс будет "запущен", когда вывод ps aux
имеет свои STAT
как R
. Если это что-то другое, то оно не выполняется в том экземпляре, в котором вы запустили команду для проверки запущенных процессов. Различные состояния процесса можно найти на странице руководства для 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 tracedW 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
С таким же успехом вы могли бы запустить top
команда для проверки того, запущен ли процесс или находится в спящем режиме, а также объема процессора и оперативной памяти, которые он потребляет. (При этом ваш процесс снова будет указан как sh
).
Однако, если вы хотите, чтобы ваш процесс был указан как abc.sh
, тогда у вас должна быть первая строка скрипта , который вы запускаете как:
#!/bin/sh
чтобы оболочка знала, какое приложение использовать для запуска скрипта (в данном случае измените его на #!/bin/bash
для bash), а затем предоставить исполняемым права доступа к процессу с помощью:
chmod +x /path/to/abc.sh
заменяющий /path/to/
с указанием местоположения abc.sh
файл, а затем запустите abc.sh
с помощью
/path/to/abc.sh
снова заменив /path/to/
с указанием местоположения abc.sh
файл.