В дополнение к вызову процессов kill(2)
, некоторые сигналы отправляются ядром (или иногда самим процессом) при различных обстоятельствах:
SIGINT
(вернитесь к основному циклу) на Ctrl+C, SIGQUIT
(выход сразу) на Ctrl + \, SIGTSTP
(приостановите) на Ctrl+Z. Ключи могут быть изменены с stty
команда.SIGTTIN
и SIGTTOU
отправляются, когда фоновый процесс пытается читать или записать в его терминал управления.SIGWINCH
отправляется, чтобы сигнализировать, что размер окна терминала изменился.SIGHUP
отправляется, чтобы сигнализировать, что терминал исчез (исторически, потому что Ваш модем завис, в наше время обычно, потому что Вы закрыли окно эмулятора терминала).SIGALRM
уведомляет, что истек таймер, установленный процессом. Таймеры могут быть установлены с alarm
, setitimer
и другие.SIGCHLD
уведомляет процесс, что один из его детей умер.SIGPIPE
сгенерирован, когда процесс пытается записать в канал, когда конец чтения был закрыт (идея - это, если Вы работаете foo | bar
и bar
выходы, foo
уничтожается a SIGPIPE
).SIGPOLL
(также названный SIGIO
) уведомляет процесс, что произошло pollable событие. POSIX указывает pollable события, зарегистрированные через I_SETSIG
ioctl
. Много систем позволяют pollable события на любом дескрипторе файла, устанавливают через O_ASYNC
fcntl
флаг. Связанный сигнал SIGURG
, который уведомляет относительно срочных данных по устройству (зарегистрированный через I_SETSIG
ioctl
) или сокет.SIGPWR
отправляется во все процессы, когда UPS сигнализирует, что сбой питания неизбежен.Эти списки не являются исчерпывающими. Стандартные сигналы определяются в signal.h
.
Большинство сигналов может быть поймано и обработано (или проигнорировано) приложением. Только два портативных сигнала, которые не могут быть пойманы, SIGKILL
(просто умрите), и STOP
(остановите выполнение).
SIGSEGV
(отказ сегментации) и его кузен SIGBUS
(ошибка шины) может быть поймана, но это - плохая идея, если Вы действительно не знаете то, что Вы делаете. Распространенное приложение для ловли их печатает отслеживание стека или другую отладочную информацию. Больше усовершенствованного приложения должно реализовать некоторое незавершенное управление памятью, или захватывать плохие инструкции в механизмах виртуальной машины.
Наконец, позвольте мне упомянуть что-то, что не является сигналом. Когда Вы нажимаете Ctrl+D в начале строки в программе, это читает вход из терминала, это говорит программе, что конец входного файла достигнут. Это не сигнал: это передается через ввод/вывод API. Как Ctrl+C и друзья, ключ может быть настроен с stty
.
Dtrace был бы хорош, но он не портирован на AIX.
Необходимо смочь проследить то, что является chmoding файл с аудитом: http://www.ibm.com/developerworks/aix/library/au-audit/
Причина очень вероятна из-за того, что учетная запись ftp
имеет значение /bin/false
или аналогична оболочке по умолчанию:
$ getent passwd ftp
ftp:x:116:127:ftp daemon,,,:/srv/ftp:/bin/false
Вероятно, это не очень хорошая идея с точки зрения безопасности, но если вы хотите установить оболочку пользователя на что-то действительное, вы можете использовать chsh
, например:
# chsh ftp /bin/bash
chsh ftp
Changing the login shell for ftp
Enter the new value, or press ENTER for the default
Login Shell [/bin/false]: /bin/bash
-121--161449- С помощью awk
можно попробовать что-то вроде,
awk 'NR % 4 == 1 {sub(/^/,">")} {print}' filename
Ссылки
https://stackoverflow.com/questions/2099471/add-a-prefix-string-to-beginning-of-each-line
-121--81293-Сначала я бы открыл запись проблемы с IBM, так как это звучит как разбитый код и должно быть исправлено. У меня лично были только подобные проблемы с/etc/resolv.conf также не читаются другими, и когда он принадлежит root: система, которая может быть проблемой.
Указатель на подсистему аудита верен, хотя знаменитый URL-рандомизатор developerworks пробил, и приведенная выше ссылка больше не работает. Проверьте, например, http://www-01.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.security/monitor_file_access_realtime.htm или заархивированную страницу: https://web.archive.org/web/20080328022606/http ://www.ibm.com/developerworks/aix/library/au-audit/
Для выбора события попробуйте использовать FILE_Write и, возможно, дополнительно FILE_Mode, FILE_Privilege и/или FILE_Acl