Файлы, которые вы создаете в $ ZSH_CUSTOM
, должны иметь расширение .zsh
, согласно ] документация :
внутренности oh-my-zsh определены в его каталоге lib. Чтобы изменить их, просто создайте файл внутри пользовательского каталога (его имя не имеет значения, если у него есть окончание .zsh)
Если вы только что скопировали .bashrc
и . bash_aliases
, поэтому oh-my-zsh их игнорирует.
Если вы хотите увидеть PID application.sh
во время его работы, я бы предложил явно перевести его в фоновый режим, захватить PID, а затем дождаться для выхода:
# ...
./application.sh -mb 14550 input.mol output.out &
app_pid=$!
echo "The application pid is: $app_pid"
wait "$app_pid"
# ...
Я полагаю, вам может понадобиться комбинация чего-то вроде pstree -p
и ps axjf
с дополнительным разбором.
Обратите внимание, что PID httpd
равен 30469
, и каждый процесс, являющийся дочерним по отношению к httpd
, имеет PPID
(родительский идентификатор процесса) из 30469
. Внуки httpd
будут иметь PPID
своего родительского процесса, который будет иметь PPID
процесса httpd
.
Я не публиковал полный вывод ни того, ни другого, так как они довольно большие. Вот пример вывода каждого из них:
user@host$ ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 30469 30469 30469 ? -1 Ss 0 0:46 /usr/sbin/httpd
30469 22410 22410 22410 ? -1 Ssl 0 0:00 \_ PassengerWatchdog
22410 22413 22413 22410 ? -1 Sl 0 23:06 | \_ PassengerHelperAgent
22410 22418 22418 22410 ? -1 Sl 99 0:01 | \_ PassengerLoggingAgent
30469 22442 30469 30469 ? -1 Sl 48 7:55 \_ (wsgi:pulp)
30469 22443 30469 30469 ? -1 S 48 1:48 \_ /usr/sbin/httpd
30469 22445 30469 30469 ? -1 S 48 1:55 \_ /usr/sbin/httpd
30469 22447 30469 30469 ? -1 S 48 1:54 \_ /usr/sbin/httpd
user@host$ pstree -p
├─httpd(30469)─┬─PassengerWatchd(22410)─┬─PassengerHelper(22413)─┬─{PassengerHelpe}(22415)
│ │ │ ├─{PassengerHelpe}(22416)
│ │ │ ├─{PassengerHelpe}(22417)
│ │ │ ├─{PassengerHelpe}(22420)
│ │ │ ├─{PassengerHelpe}(22422)
│ │ │ ├─{PassengerHelpe}(22423)
│ │ │ ├─{PassengerHelpe}(29342)
Обратите внимание, если вы знаете дерево родительских процессов, вы можете запустить pstree -p
.
Чтобы сохранить идентификатор процесса утилиты, запустите его как асинхронный процесс и сохраните его PID в переменной или используйте $!
напрямую (это PID последнего запущенного фонового процесса):
#!/bin/bash
export DALTON_TMPDIR=/mnt/raid0/scratch
export OMP_NUM_THREADS=6
source /opt/intel/compilers_and_libraries_2017.0.098/linux/bin/compilervars.sh intel64
source /opt/intel/mkl/bin/mklvars.sh intel64
printf 'Started at "%s"\n' "$(date)"
SECONDS=0
./application.sh -mb 14550 input.mol output.out &
app_pid="$!"
printf 'Application PID is %d\n' "$app_pid"
wait "$app_pid"
printf 'Ended at "%s"\n' "$(date)"
printf 'Run time was approximately %d minutes (%d seconds)\n' "$(( SECONDS/60 ))" "$SECONDS"
PID приложения — $app_pid
.
Вы говорите, что заметили, что PID новых процессов всегда больше, чем у предыдущих процессов. Это не то, на что вы можете положиться, по двум причинам:
Некоторые системы, такие как OpenBSD, используют случайное распределение PID:
$ для i в {1..5}; сделать bash -c 'эхо $$'; Выполнено
49915
2152
61168
87739
95187
В качестве примечания: вы можете использовать $PWD
вместо $(pwd)
, чтобы получить текущий рабочий каталог.