Уничтожение процесса в Сценарии оболочки

Ну, как и у любого в этой теме, та же проблема, другая причина.

Мне пришлось изменить параметр SVNPath на SVNParentPath. Причина в том, что SVNPath обрабатывает только один репозиторий и добавляет к URL-адресу, который запрашивает браузер, префикс. Но в моей настройке у меня был каталог со всеми репозиториями svn, и он обрабатывается SVNParentPath. Ниже приведена директива о моем местонахождении для apache2.

<Location /svn/>
    DAV svn
    SVNParentPath /svn
    AUTHType Basic
    AUTHName "foo"
    AuthUserFile /path/to/passwd
    AuthzSVNAccessFile /path/to/authz-svn-access
    Require valid-user
</Location>
7
задан sth 4 June 2009 в 17:32
поделиться

6 ответов

В большинстве оболочек (включая Bourne и C) PID последнего подпроцесса, запущенного в фоновом режиме, будет храниться в специальной переменной $!.

#!/bin/bash
./app1 &
PID=$!
# ...
kill $PID

Здесь некоторая информация в разделе «Специальные переменные» раздел.

15
ответ дан 6 December 2019 в 06:50
поделиться

В bash $! расширяется до PID последнего процесса, запущенного в фоновом режиме. Итак, вы можете сделать:

./app1 param1 &
APP1PID=$!
# ...
kill $APP1PID
5
ответ дан 6 December 2019 в 06:50
поделиться

, если вы хотите узнать PID процесса, вы можете использовать ps :

[user@desktop ~]$ ps h -o pid -C app1

параметр -o pid говорит, что вы требуется только PID процесса, -C app1 указывает имя процесса, который вы хотите запросить, а параметр h используется для подавления заголовка таблицы результатов (без вы увидите заголовок «PID» над самим PID). не то, чтобы, если существует более одного процесса с одинаковым именем, будут показаны все PID.

если вы хотите убить этот процесс, вы можете использовать:

[user@desktop ~]$ kill `ps h -o pid -C app1`

хотя killall чище если вы просто хотите это сделать (и если вы не против убить все процессы "app1"). вы также можете использовать голову или хвост , если вам нужен только первый или последний PID,

и совет для пользователей fish : % process заменяется PID процесса . Итак, в fish вы можете использовать:

user@desktop ~> kill %app1
3
ответ дан 6 December 2019 в 06:50
поделиться

вы получаете pid app1 с помощью

ps ux | awk '/app1/ && !/awk/ {print $2}'

, и тогда вы сможете убить его .... (однако, если у вас несколько экземпляров app1, вы можете убить их всех)

2
ответ дан 6 December 2019 в 06:50
поделиться
pidof app1
pkill -f app1
1
ответ дан 6 December 2019 в 06:50
поделиться
killall app1
0
ответ дан 6 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: