Это может помочь:
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get install git
Если вы хотите, чтобы скрипт отображался вместе со своим именем в списке процессов, вам следует добавить соответствующую строку -bang(#! /bin/sh
или #! /bin/bash
).
Пример:
$ cat foo
sleep 10
$./foo &
[4] 4403
$ ps -q 4403
PID TTY TIME CMD
4403 pts/3 00:00:00 bash
$ cat bar
#! /bin/sh
sleep 10
$./bar &
[5] 4406
$ ps -q 4406
PID TTY TIME CMD
4406 pts/3 00:00:00 bar
В противном случае в Linux вы все равно можете найти имя скрипта в каталоге /proc/PID/fd
:
$./foo &
[2] 5125
$ ls -l /proc/5125/fd
total 0
lrwx------ 1 ahq ahq 64 Oct 22 17:57 0 -> /dev/pts/3
lrwx------ 1 ahq ahq 64 Oct 22 17:57 1 -> /dev/pts/3
lrwx------ 1 ahq ahq 64 Oct 22 17:57 2 -> /dev/pts/3
lr-x------ 1 ahq ahq 64 Oct 22 17:57 254 -> /tmp/foo
lrwx------ 1 ahq ahq 64 Oct 22 17:57 255 -> /dev/pts/3
Обратите внимание на четвертую строку, 254
fd, которая указывает путь к выполняемому сценарию. С оболочками, отличными от bash
, это будет другой fd
, например 3
или 10
.
Это также можно выполнить в обратном порядке с помощью lsof /tmp/foo
.
В Linux вы можете:
grep -l hello.sh /proc/*/task/*/comm 2>/dev/null
... который будет сообщать о любом из ваших процессов с «hello.sh» в своей команде -строка (pid 26560, когда я запускал его):
/proc/26560/task/26560/comm
Перенаправление stderr заключается в том, чтобы удалить жалобу grep на файл связи вашего текущего процесса (/proc/self/task/$$/comm )исчезновение между моментом, когда оболочка расширяет путь с подстановочными знаками, и когда grep решает открыть его для чтения/сбора.
Если вы запустите второй "hello.sh", вы получите два результата и т. д.:
$./hello.sh &
[2] 28328
$ grep -l hello.sh /proc/*/task/*/comm 2>/dev/null
/proc/26560/task/26560/comm
/proc/28328/task/28328/comm