Основные сигналы
Следующие сигналы являются частью стандарта POSIX. Каждый сигнал макрос, определенный в <signals.h> Файл заголовка системы. Они, как правило, сокращенны, без их SIG- префикса; например SIGHUP часто называют просто как HUP.
SIGTERM – Этот сигнал запрашивает остановку процесса который работает. Этот сигнал может быть проигнорирован.Процессу дается время, чтобы хорошо выключился. Когда программа хорошо выключается, это означает, что ей дано время, чтобы спасти его прогресс и освободить ресурсы. Другими словами, он не «forced» прекращение работы процесса.
SIGKILL – сигнал SIGKILL заставляет процесс прекратить выполнение своей работы немедленно. Программа не может игнорировать этот сигнал. Несохраненный прогресс будет потерян.
Синтаксис для «kill».
Синтаксис команды такой:
# kill PID(s)
или
# kill %pid
Сигнал по умолчанию (если он не указан) является SIGTERM. Когда данный сигнал не помогает и не работает, вы можете использовать следующие опции для «kill» чтобы завершить процесс принудительно:
# kill SIGKILL PID
Или
# kill -9 PID
где «-9» — это флаг относится к сигналу SIGKILL.
Если вы не знаете какой нужно использовать PID приложения которого следует избавиться, то запустите команду:
$ ps -aux
А если знаете конкретное приложение (например apache), то можно отсеять ненужное и вывести все процессы по данной службе:
$ ps -aux | grep apache
И это отобразит все запущенные приложения вместе с его PID-ом(ами).
Например, чтобы убить приложение, я выполните следующую команду:
# kill -9 3629
Стоит также отметить, что вы можете использовать несколько процессов одновременно чтобы их можно было » убить»:
# kill -9 PID1 PID2 PID 3
Перезагурзить конфигурационные файлы или перезапуск утилит:
# kill -1 number_of_PID
Особенно полезными сигналы включают HUP, INT, kill, STOP, CONT, и 0.
Варианты таковы:
-s signal_name
Символическое имя сигнала, задающее сигнал для отправки сигнала не по умолчанию.
-l
Если операнд не указан, то показать имена сигналов; В противном случае, написать название сигнала, соответствующего exit_status.
-signal_name
Символическое имя сигнала, задающее сигнал для отправки в TERM по умолчанию.
-signal_number
Неотрицательное десятичное целое, задающее сигнал для отправки в TERM по умолчанию.
Следующие PID-ы, имеют особое значение:-1 Если суперпользователь, то транслирует сигнал всем процессам; в противном случае вещает на все процессыbelong-
ing для пользователя.
Некоторые из наиболее часто используемых сигналов:
- 1 HUP (hang up) — повесить.
- 2 INT (interrupt) — прерывание.
- 3 QUIT (quit) — выход.
- 6 ABRT (abort) — прерывания.
- 9 KILL (non-catchable, non-ignorable kill)
- 14 ALRM (alarm clock) — будильник.
- 15 TERM (software termination signal) — Программное обеспечение для прекращения сигнала.
PKill
Команда «pkill» позволяет использовать расширенные шаблоны регулярных выражений и других критериев соответствия. Вместо того чтобы использовать PID, теперь вы можете убить приложение, введя имя процесса. Например, чтобы убитьбраузер Firefox , просто запустите команду:
# pkill Firefox
Так как он соответствует шаблону регулярного выражения, вы также можете ввести часть имени процесса, например:
# pkill fire
Чтобы избежать «убийства» неправильных процессов, вы можете сделать «pgrep -l » в список подходящих процессов.
Pkill команда имеет гораздо больше вариантов, например если указать опцию «-u», то она позволит вам указать имя пользователя или ID. В этом примере мы посылаем сигнал TERM всем процессам, принадлежащие пользователю ‘nobody’:
# pkill -u nobody
Killall
Killall использует имя процесса, а вместо PID, и он «убивает» все экземпляры процесса с тем же именем. Например, если вы используете несколько экземпляров браузера Firefox, вы можете убить их всех с помощью команды:
# killall firefox
В Gnome, вы можете перезапустить Nautilus с помощью команды:
# killall nautilus
xkill
Xkill является графическим способом «убить» приложение. При вводе «XKill» в терминале, курсор мыши будет немедленно стать «крест». Все, что вам нужно сделать, это нажать «крест» на провинившихся приложение и он убьет приложение мгновенно. Если вы заинтересованы, вы можете добавить сочетание клавиш для включения функции XKill.
Параметры для работы с командой dd
В довольно большой набор дополнительных параметров для конфигурации настроек. Мы рассмотрим основные из них:
- — Установить размер блока (), который система будет считывать. Оптимально использовать 4–8 MB;
- — Установить, сколько байт нужно записывать за один раз;
- — Выбрать определенное число блоков для копирования. А чтобы обозначить их размер, подключают -опцию.
- — обозначить сколько байт нужно считать за раз. По умолчанию — 512 байт.
- — Обозначить сколько байт нужно записать за раз. По умолчанию — 512 байт.
- — Пропустить определенное количество байт в начале вывода;
- — Пропустить определенное количество байт в начале ввода;
- — Параметр, чтобы преобразовать файл. Параметр имеет собственные параметры. С их помощью, например, можно конвертировать систему кодов ASCII в EBCDIC и наоборот. В таблице указаны основные способы конвертации файлов.
Параметр | Действие |
Заменить буквы верхнего регистра на нижний | |
Заменить буквы нижнего регистра на верхний | |
Не создавать выходной файл | |
Игнорировать ошибки ввода-вывода | |
Поменять местами каждую пару байтов ввода | |
Записывает данные выходного файла до окончания процесса | |
Аналогично , но еще записываются метаданные | |
Не обрезать выходной файл |
Назначение команды dd
Мы упоминали, что основная задача — обработка файлов. Но в Linux все устройства, порты, оперативная память и память с кодом процессов отображаются как файлы, а это значит, что над ними можно проводить операции в . Еще утилита позволяет осуществлять выборочное копирование файлов с диска. Например, переместить фрагмент файла определенного размера или пропустить несколько гигабайт. Эта функция также помогает считать файлы с поврежденного носителя, изменить расположение байтов в файле, создавать файлы фиксированного размера. Кроме этого в можно создать дополнительную копию загрузочного сектора жесткого диска или прочитать блоки из системных файлов.
Using the Swaks Command
The swaks command is flexible, scriptable and a simple SMTP test utility. Very useful in handling SMTP features like the TLS and authentications.
To install swaks in Debian/ Ubuntu Systems run
sudo apt-get install swaks
1 | sudo apt-get install swaks |
To install swaks in RedHat / CentOS Systems run
yum install swaks
1 | yum install swaks |
A simple implementation of the swaks command is to use the following flags:
- Server –s
- The user –au
- The password –ap
- The address of the recipient
- The –tls is necessary if you are connecting to port 587
1 |
#swaks —to [email protected] -s smtp.gmail.com:587 -tls-au-ap |
DESCRIPTION
mailed
The options are as follows:
-a
Specify additional header fields on the command line such as «X-Loop:
foo@bar» etc. You have to use quotes if the string contains spaces.
This argument may be specified more than once, the headers will then
be concatenated.
-b bcc-addr
Send blind carbon copies to
bcc-addr
-c cc-addr
Send carbon copies to
list
of users.
cc-addr
should be a comma separated list of names.
-d
Causes
mail
to output all sorts of information useful for debugging
mail
-E
Don’t send messages with an empty body.
-f
if no
file
is specified.
When quit,
mail
writes undeleted messages back to this
file
-I
Forces
mail
to run in interactive mode, even when input is not a terminal.
In particular, the special
~
command character, used when sending mail, is only available interactively.
-i
Ignore tty interrupt signals.
This is
particularly useful when using
mail
on noisy phone lines.
-N
Inhibits initial display of message headers
when reading mail or editing a mail folder.
-n
Inhibits reading
/etc/mail.rc
upon startup.
-s subject
Specify subject on command line
(only the first argument after the
—s
flag is used as a subject; be careful to quote subjects
containing spaces).
-u user
Equivalent to:
except that locking is done.
-v
Verbose mode.
The details of
delivery are displayed on the user’s terminal.
Specifying messages
printdeletedelete 1 2delete 1-5
Messages may also be selected using one of the following categories:
*
all messages
$
last message
:d
deleted messages
:n
new messages
old messages
:r
read messages
:u
unread messages
Thus the command
top
which prints the first few lines of a message,
could be used in
top
to print the first few lines of all messages.
Recipient address specifications
expandaddr
An address may be expanded as follows:
An address that starts with a pipe
(`|’
)
character is treated as a command to run.
The command immediately following the
`|’
is executed with the message as its standard input.
An address that starts with a
`+’
character is treated as a folder.
An address that contains a
`/’
character but no
`!’
,
`%’
,
or
`@’
characters is also treated as a folder.
If none of the above apply, the recipient is treated as
a local or network mail address.
If the
expandaddr
option is not set (the default), no expansion is performed and
the recipient is treated as a local or network mail address.
Network mail (ARPA, UUCP, Berknet)
mailaddr
has a number of options which can be set in the
.mailrc
file to alter its behavior; thus
set askcc
enables the
askcc
feature.
(These options are summarized below.)
Отправка почты
В зависимости от дистрибутива, который вы используете, может понадобиться установить дополнительные пакеты, такие как mailutils, чтобы команда mail нормально работала.
Пользователи Debian/Ubuntu могут воспользоваться командой apt-get:
# apt-get install mailutils
Пользователи Fedora / CentOS / Red Hat Enterprise Linux (RHEL) могут сделать это с помощью yum:
# yum install mailutils
Теперь команда mail должна быть готова к работе.
Выполните приведенную ниже команду, заменив «[email protected]» на свой адрес электронной почты. Опция s задает тему письма.
$ mail -s "Hello World" [email protected]
Теперь вы можете вводить текст письма. Когда закончите, нажмите «control-D» в начале новой строки.
# mail -s "This is the subject" [email protected] Cc: Hi Silver How are you doing Hope its going fine. Bye
Вы отправили первое письмо из командной строки. Содержимое письма можно вставить из файла.
В некоторых дистрибутивах командная оболочка сначала запросит в интерактивном режиме ввод других полей, таких как «Cc» (Carbon copy). Просто нажимайте «Enter», чтобы пропустить этот этап. Когда вы введете адрес или адреса электронной почты, необходимо нажать «Enter», чтобы перейти на новую строку, к телу письма.
После нажатия Ctrl+D вы возвращаетесь в командную строку без каких либо дополнительных оповещений. Однако ваше письмо было отправлено.
Интересно, что если вы ничего не введете в теле письма и нажмете Ctrl+D, команда mail отреагирует на это:
# mail -s "This is the subject" [email protected] Cc: Null message body; hope that's ok
Если тело письма хранится у нас в отдельном файле, мы можем напрямую использовать его для отправки письма. Это полезно при вызове команды mail из скриптов, или других программ, написанных, например, на perl или php.
$ mail -s "Hello World" [email protected] < /home/user/mailcontent.txt
Или быстрая отправка письма одной строкой:
# echo "This is the message body" | mail -s "This is the subject" [email protected]
Другие полезные параметры команды mail:
Ниже пример использования этих опций:
$ mail -s "Hello World" [email protected] -c [email protected] -b [email protected]
Возможно задавать несколько получателей, перечисляя их адреса через запятую.
$ mail -s "Hello World" [email protected],[email protected]
Указать адрес отправителя тоже несложно, но здесь есть своя хитрость. После отправляемого письма необходимо добавить перед своим адресом следующую последовательность символов:
(двойное тире) (пробел) (одинарное тире) (без пробела) f
Ниже пример:
$ mail -s "Hello World" [email protected] -- -f [email protected]
Однако приведенная выше последовательность может работать в centos, но не в debian или ubuntu. В этих системах используется альтернативный синтаксис:
# echo "This is the message body" | mail -s "This is the subject" [email protected] -aFrom:[email protected]
Опция a в целом добавляет дополнительные заголовки. Чтобы задать с ее помощью отправителя, используется следующий синтаксис:
# echo "This is the message body" | mail -s "This is the subject" [email protected] -aFrom:Blogger\<[email protected]\>
Обратите внимание, что бы экранируем угловые скобки, так как они могут иметь свое назначение для командной оболочки
Команда tr и ее синтаксис
Ниже приведен синтаксис команды tr. Требуется, как минимум, два набора символов и опции.
tr "SET1" "SET2"
SET1 и SET2 это группы символов. are a group of characters. Необходимо перечислить необходимые символы или указать последовательность.
-> восмеричные (OCT) символы NNN (1 до 3 цифр)
-> обратный слеш (экранированный)
-> новая строка (new line)
-> перенос строки (return)
-> табуляция (horizontal tab)
-> все буквы и цифры
-> все буквы
-> все пробелы
-> все управляющие символы (control)
-> все цифры
-> все буквы в нижнем регистре (строчные)
-> все буквы в верхнем регистре (заглавные)
Примеры использования команды tr:
echo "something to translate" | tr "SET1" "SET2"
tr "SET1" "SET2" < file-to-translate
tr "SET1" "SET2" < file-to-translate > file-output
Вот некоторые опции:
, , -> удалить все символы, кроме тех, что в первом наборе, -> удалить символы из первого набора, -> заменять набор символов, которые повторяются, из указанных в последнем наборе знаков
Команды Linux, связанные с процессом
Эти команды используются для обработки процессов Linux
55. ps
Команда Linux ps — это встроенный инструмент для отслеживания текущих процессов в системе. Он будет фиксировать состояние системы за один раз.
56. pmap
Команда pmap отображает карту использования памяти процесса или нескольких процессов. Pmap сообщает информацию об адресном пространстве или карте использования памяти процесса.
57. top
Команда top в Linux отображает запущенные процессы в системе. Эта команда широко используется для мониторинга нагрузки на сервер.
58. kill
Команда kill используется в Linux и других Unix-подобных операционных системах для завершения процессов без необходимости выхода из системы или перезагрузки компьютера.
59. killall
Команда killall может использоваться для отправки сигнала определенному процессу, используя его имя. Это означает, что если у вас запущено пять версий одной и той же программы, команда killall уничтожит все пять.
60. pkill
Аналогично команде killall, pkill посылает сигнал для завершения процесса с его именем. Начиная с Centos 7 рекомендуется использовать pkill.
61. fg и bg
Мы можем запускать задания в фоновом режиме без какого-либо вмешательства пользователя. Процессы, которые были остановлены каким-либо сигналом прерывания, могут быть продолжены в фоновом режиме с помощью команды bg. Команда fg похожа на команду bg, за исключением того, что вместо отправки команды в фоновом режиме она запускает их на переднем плане, занимает текущий терминал и ожидает завершения процесса.
Команда chgrp Linux
Стандарт прав файлов пришёл в Linux из Unix. У каждого файла есть владелец (user) и группа (group), помимо этого описываются права остальных пользователей (other). Права состоят из трёх пунктов: чтение (read), запись (write), выполнение (execute). Для изменения прав используется команда umask, но для изменения непосредственно владельца и группы используются команды chown и chgrp. Для просмотра текущих прав можно использовать команду ls.
Синтаксис и опции chgrp
Общий вид команды chgrp:
$ chgrp новая_группа имя_файла
Список распространённых параметров команды chgrp:
- -h – работать непосредственно с самими символьными ссылками, а не с файлами, на которые они ссылаются;
- —dereference – работать с файлами, а не самими символьными ссылками. Используется по умолчанию;
- -R – рекурсивная обработка каталога со всем его содержимым;
- -H – перейти по символической ссылке и изменить атрибуты файла/каталога. Сама ссылка остаётся без изменений. Используется вместе с параметром -R;
- -L — перейти по символической ссылке и продолжить рекурсивную обработку. Сама ссылка остаётся без изменений. Используется вместе с параметром -R;
- -P – при встрече с символьной ссылкой обрабатывать только её. Используется вместе с параметром -R, является значением по умолчанию;
- —reference=имя_образца – использовать группу образца. Используется вместо новая_группа;
- -c – при обработке выводить только изменения;
- -v – выводить информацию о каждом обработанном файле.
Использование команды chgrp
Рассмотрим сразу несколько случаев использования, с реальным файлом и каталогом, а затем с символическими ссылками на них. Простейший пример использования команды chgrp без параметров. Следующая команда меняет группу на www-data для файла file в текущей папке:
А эта меняет группу на www-data для папки folder:
С реальными файлами и каталогами команда работает весьма предсказуемо, меняя их группу. Файлы в папке остаются неизменными. Если же обрабатывать символические ссылки, то их атрибуты останутся неизменными, а файлы получат новую группу. Такое поведение аналогично работе с параметром —dereference. Например, эти команды, применённые к символическим ссылкам, отработают как показано на снимке:
Теперь посмотрим на то, как будет работать параметр -h, меняющий атрибуты символической ссылки:
С параметром -h изменились только атрибуты ссылок, а не сами файлы. Теперь рассмотрим работу c параметром -R, предназначенным для рекурсивной обработки каталогов:
Новая группа была задана не только каталогу, но и всем файлам внутри
Обратите внимание на то, что поведение изменилось, теперь при обработке символической ссылки атрибуты выставляются для самой ссылки, а не файла
Чтобы увидеть разницу между параметрами -H и -L, рассмотрим ещё пару примеров. Напомним, что их надо использовать совместно с параметром -R:
С использованием параметра -H поведение при обработке символических ссылок изменилось, теперь они обрабатываются так, как будто команды выполняются по отдельности. Атрибуты ссылок не меняются, меняются атрибуты самих файлов, при переходе на каталог рекурсивная обработка прекращается.
С использованием параметра -L при переходе к папке по символической ссылке рекурсивная обработка не прекращается
Обращаем ваше внимание на то, что параметры -H и -L использовать небезопасно, они могут дойти до системных файлов
Mail Options
set unset
Tag | Description |
---|---|
append | |
Causes messages saved in mbox to be appended to the end rather than prepended. This should always be set (perhaps in /etc/mail.rc). |
|
ask, asksub | |
Causes to prompt you for the subject of each message you send. If you respond with simply a newline, no subject field will be sent. |
|
askcc |
Causes you to be prompted for additional carbon copy recipients at the end of each message. Responding with a newline indicates your satisfaction with the current list. |
askbcc | |
Causes you to be prompted for additional blind carbon copy recipients at the end of each message. Responding with a newline indicates your satisfaction with the current list. |
|
autoprint | |
Causes the delete command to behave like dp — thus, after deleting a message, the next one will be typed automatically. |
|
debug |
Setting the binary option debug is the same as specifying —d on the command line and causes to output all sorts of information useful for debugging mail. |
dot |
The binary option dot causes to interpret a period alone on a line as the terminator of a message you are sending. |
hold |
This option is used to hold messages in the system mailbox by default. |
ignore | |
Causes interrupt signals from your terminal to be ignored and echoed as @s. |
|
ignoreeof | |
An option related to dot is ignoreeof which makes refuse to accept a control-d as the end of a message. Ignoreeof also applies to command mode. |
|
metoo |
Usually, when a group is expanded that contains the sender, the sender is removed from the expansion. Setting this option causes the sender to be included in the group. |
noheader | |
Setting the option noheader is the same as giving the —N flag on the command line. |
|
nosave | |
Normally, when you abort a message with two RUBOUT (erase or delete) copies the partial letter to the file «dead.letter» in your home directory. Setting the binary option nosave prevents this. |
|
Replyall | |
Reverses the sense of reply and Reply commands. |
|
quiet | Suppresses the printing of the version when first invoked. |
searchheaders | |
If this option is set, then a message-list specifier in the form /x:y will expand to all messages containing the substring y in the header field x. The string search is case insensitive. |
|
verbose | |
Setting the option verbose is the same as using the —v flag on the command line. When mail runs in verbose mode, the actual delivery of messages is displayed on the users terminal. |
Отправка писем из скриптов bash/shell
Теперь давайте копнем глубже и попробуем отправить письмо из скрипта оболочки. Ниже простой скрипт, отправляющий информацию по использованию диска.
#!/bin/bash du -sh | mail -s "disk usage report" [email protected]
Откройте новый файл, вставьте в него приведенные выше строки, сохраните и запустите. Вы получите письмо, содержащее вывод команды «du -sh».
И последняя хитрость в письмах из командной сроки — добавление вложений к письмам, отправляемым из скриптов. Предположим, вам необходимо сделать резервную копию директории с конфигурационными файлами, заархивировать ее и отправить в качестве вложения с помощью mutt:
#!/bin/bash tar -zcf /home/user/backup.tar.gz /home/user/files_to_backup echo "Archived configuration files" | mutt -a /home/user/backup.tar.gz -s "backup data" [email protected]
Команда echo в начале третьей строки добавляет текст «Archived configuration files» в тело письма.
Команды Linux, для работы с файлами
Эти команды используются для обработки файлов и каталогов.
33. ls
Очень простая, но мощная команда, используемая для отображения файлов и каталогов. По умолчанию команда ls отобразит содержимое текущего каталога.
34. pwd
Linux pwd — это команда для показывает имя текущего рабочего каталога. Когда мы теряемся в каталогах, мы всегда можем показать, где мы находимся.
Пример ример ниже:
35. mkdir
В Linux мы можем использовать команду mkdir для создания каталога.
По умолчанию, запустив mkdir без какой-либо опции, он создаст каталог в текущем каталоге.
36. cat
Мы используем команду cat в основном для просмотра содержимого, объединения и перенаправления выходных файлов. Самый простой способ использовать cat— это просто ввести » имя_файла cat’.
В следующих примерах команды cat отобразится имя дистрибутива Linux и версия, которая в настоящее время установлена на сервере.
37. rm
Когда файл больше не нужен, мы можем удалить его, чтобы сэкономить место. В системе Linux мы можем использовать для этого команду rm.
38. cp
Команда Cp используется в Linux для создания копий файлов и каталогов.
Следующая команда скопирует файл ‘myfile.txt» из текущего каталога в «/home/linkedin/office«.
39. mv
Когда вы хотите переместить файлы из одного места в другое и не хотите их дублировать, требуется использовать команду mv. Подробнее можно прочитать ЗДЕСЬ.
40.cd
Команда Cd используется для изменения текущего рабочего каталога пользователя в Linux и других Unix-подобных операционных системах.
41. Ln
Символическая ссылка или программная ссылка — это особый тип файла, который содержит ссылку, указывающую на другой файл или каталог. Команда ln используется для создания символических ссылок.
Команда Ln использует следующий синтаксис:
42. touch
Команда Touch используется в Linux для изменения времени доступа к файлам и их модификации. Мы можем использовать команду touch для создания пустого файла.
44. head
Команда head используется для печати первых нескольких строк текстового файла. По умолчанию команда head выводит первые 10 строк каждого файла.
45. tail
Как вы, возможно, знаете, команда cat используется для отображения всего содержимого файла с помощью стандартного ввода. Но в некоторых случаях нам приходится отображать часть файла. По умолчанию команда tail отображает последние десять строк.
46. gpg
GPG — это инструмент, используемый в Linux для безопасной связи. Он использует комбинацию двух ключей (криптография с симметричным ключом и открытым ключом) для шифрования файлов.
50. uniq
Uniq — это инструмент командной строки, используемый для создания отчетов и фильтрации повторяющихся строк из файла.
53. tee
Команда Linux tee используется для связывания и перенаправления задач, вы можете перенаправить вывод и/или ошибки в файл, и он не будет отображаться в терминале.
54. tr
Команда tr (translate) используется в Linux в основном для перевода и удаления символов. Его можно использовать для преобразования прописных букв в строчные, сжатия повторяющихся символов и удаления символов.