Существует также curl
- мой любимый (по моему скромному мнению, более гибкий, чем wget
).
Если Вы намереваетесь контролировать, Ваши веб-серверы не забывают устанавливать строку специального агента, таким образом, можно дифференцироваться, кто получил доступ серверу (если Вы делаете статистику).
Что делает Ctrl-Z отличающимся от
kill -STOP
, и как я могу получить поведение первого в сценарии оболочки?
CTRL-Z
обычно отправляет SIGTSTP (который может быть заблокирован), и - кроме других вещей - оболочки часто сбрасывают tty к ранее сохраненному состоянию в этих случаях. Что еще более важно, однако группа процесса терминала управления установлена на PID оболочки (и с другой стороны на PID задания, возобновленного с fg
).
Назад к Вашей исходной проблеме: использование температурного зависимого частотного масштабирования как, например, Cpufreqd могло бы быть на самом деле лучшим молотком для Вашего гвоздя.
Вы не хотите останавливаться make
процесс; Вы хотите остановиться make
процесс и все его дочерние процессы. Я держал пари, делают, выполнялся рекурсивно.
Вы могли попробовать set -m
, затем используйте %1
вместо "$subpid"
.
set -m
включает "управление заданиями", которое выключено значением по умолчанию в сценариях. Я думаю, что это должно работать на Ваш вариант использования, хотя люди, кажется, думают, что это - плохая идея в целом.
Можно отправить сигнал во все процессы в группе процесса при определении отрицательного значения PID - PGID лидера сессии.
kill -STOP -"$subpid"
Примечание: Запускать программу в новом использовании сессии setsid make
. Но в Вашем случае я думаю, что это не нужно. Однако, если делают, выполняется рекурсивно, каждый экземпляр делают, мог бы быть его собственный лидер (я не уверен в этом).
Другая опция могла состоять в том, чтобы использовать killall
:
killall -STOP make
Различие между Ctrl+Z и уничтожает - ОСТАНОВКА:
/usr/local/bin/myscript: line 38: kill: (-10202) - No such process
. Фоновые процессы продолжали работать. Я не думаю killall
подход работал бы, потому что некоторые подпроцессы, кажется, sh
вместо make
.
– Taymon
21.03.2013, 00:52
make
команда, но когда я сделал это из сценария, корневой PID, была из самого сценария оболочки.
– Taymon
22.03.2013, 21:20
Ctrl + C используется для уничтожения процесса сигналом SIGINT
, другими словами, это вежливое уничтожение .
Ctrl + Z используется для приостановки процесса путем отправки ему сигнала SIGSTP , который подобен сигналу сна, который можно отменить, а процесс можно остановить. снова возобновился.
Однако, когда процесс приостановлен, мы можем возобновить его снова,fg
(возобновив работу на переднем плане)иbg
(возобновив работу в фоновом режиме ),но я не могу возобновить убитый процесс, это разница между использованием Ctrl + C и Ctrl + Z .
Как просмотреть приостановленный процесс?
Если у вас есть несколько приостановленных команд, чтобы вывести их в список, вы используете команду jobs
, и вывод будет:
[1]- Stopped cat
[2]+ Stopped vi
Как убить приостановленный процесс в фоновом режиме?
С помощью команды kill
:
kill %n
где n — это номер задания (тот, что в квадратных скобках из вывода заданий ), поэтому я хочу убить кота:kill %1
.