Какой сигнал отправляется, когда вы закрываете терминал bash для программ, которые он запускал

В настоящий момент существуют различные улучшения, которые можно сделать. Во-первых, и наименее важный, у Вас есть бесполезное использование кошки. То, что намного более важно, - то, что Вы работаете sed многократно, каждый из которых распечатает весь файл. Я не действительно уверен, с чем Вы делаете grep, Вы пытаетесь распечатать только те строки, которые содержат определенную переменную?

Так или иначе один способ сделать вещи лучше состоял бы в том, чтобы работать sed однажды и имеют его, делают все замены. Что-то как:

replace=""
for item in ${!values[@]}
do
    ## build the sed line
    replace="s/${values[$item]}=[^&\t\n]*/${values[$item]}=***/g;$replace"
done

### run the replacement using sed's -i option so it 
### changes the original file
eval sed -i \""$replace"\" $apacheLog

3
06.01.2017, 15:24
1 ответ

Вот сценарий, который генерирует сценарий , который пытается перехватить все сигналы. Сценарий, который он генерирует ( sigcatcher.sh ), выводит имя пойманного сигнала перед завершением.

#!/bin/sh

# generate a shell function for each and every available signal.

/bin/kill -l | tr ' ' '\n' |
while read signal; do
    cat <<END_OF_FUNCTION
handle_$signal () {
  echo "Caught $signal"
  exit
}

trap 'handle_$signal' $signal

END_OF_FUNCTION
done >sigcatcher.sh

echo 'echo "$$"; sleep 600' >>sigcatcher.sh

В моей системе (OpenBSD) / bin / kill -l генерирует список доступных сигналов в одной строке, поэтому tr используется, чтобы разбить его.

Сгенерированный скрипт будет выглядеть примерно так:

handle_HUP () {
  echo "Caught HUP"
  exit
}

trap 'handle_HUP' HUP

handle_INT () {
  echo "Caught INT"
  exit
}

trap 'handle_INT' INT

(и т. Д.)

И он будет завершен с помощью

echo "$$"; sleep 600

Он выводит свой PID и находится в спящем режиме в течение 10 минут.

Вы запускаете его так:

$ sh ./sigcatcher.sh >sigcatcher.out

Затем вы закрываете окно и проверяете sigcatcher.out .

Я не запускаю X Windows, но когда я закрываю панель tmux , в которой выполняется этот сценарий, я получаю сообщение «Caught HUP» в выходном файле.

1
27.01.2020, 21:31

Теги

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