Наиболее вероятная причина медленной работы - файл раскраска типа, вы можете избежать этого, отключив параметры цвета \ ls
или / bin / ls
.
Если у вас действительно так много файлов в каталоге, используйте ] find
тоже неплохой вариант.
В дополнение к bash
's $BASHPID
вы можете сделать это портативно с помощью:
pid=$(exec sh -c 'echo "$PPID"')
Пример:
(pid=$(exec sh -c 'echo "$PPID"'); echo "$$ $pid")
Вы можете превратить это в функцию:
# usage getpid [varname]
getpid(){
pid=$(exec sh -c 'echo "$PPID"')
test "$1" && eval "$1=\$pid"
}
Обратите внимание, что некоторые оболочки (, например. zsh
илиksh93
)НЕ запускайте подпроцесс для каждой подоболочки, созданной с помощью (...)
; в этом случае $pid
может оказаться таким же, как $$
, что правильно, потому что это PID процесса, из которого был вызван getpid
.
В Linux кросс--решение оболочки (, по крайней мере, dash, bash, zsh ), которое не порождает новый процесс
read -r this_pid < /proc/self/stat; echo ${this_pid%% *}
По крайней мере, в bash и zsh мы также можем использовать пробел для чтения -разделитель:
read -d ' ' this_pid < /proc/self/stat ; echo $this_pid
См. также man 5 proc section /proc/[pid]/stat