Действительно ли безопасно повысить то значение и каковы были бы последствия слишком высокого значения?
Да, безопасно повысить то значение, и ниже возможные затраты [источник]:
Проверять макс. количество часов inotify:
cat /proc/sys/fs/inotify/max_user_watches
Определять макс. номер часов inotify
Временно:
sudo sysctl fs.inotify.max_user_watches=
с Вашим предпочтительным значением в конце.Постоянно (более подробная информация):
fs.inotify.max_user_watches=524288
в Ваши sysctl настройки. В зависимости от Вашей системы они могли бы быть в одном из следующих мест: /etc/sysctl.conf
/etc/sysctl.d/
, например. /etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian/RedHat) или sysctl --system
(Дуга)Проверьте, чтобы видеть, было ли макс. количество часов inotify достигнуто:
Использовать tail
с -f
(следуйте) за опцией на любом старом файле, например. tail -f /var/log/dmesg
: - Если все хорошо, это покажет последние 10 строк и паузу; аварийное прекращение работы с Ctrl-C - Если Вы вне часов, это перестанет работать с этой несколько загадочной ошибкой:
tail: cannot watch '/var/log/dmsg': No space left on device
Видеть, что израсходовало часы inotify
find /proc/*/fd -lname anon_inode:inotify |
cut -d/ -f3 |
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
uniq -c |
sort -nr
Первый столбец указывает на количество inotify fds (не количество часов хотя) и вторые шоу PID того процесса [источники: 1, 2].
Существует много различных версий mail
вокруг. Когда Вы идете вне mail -s subject to1@address1 to2@address2 <body
(для отправки это - все гарантии POSIX — и даже -s
не существовал в былые времена), они имеют тенденцию иметь различные параметры командной строки. Добавление дополнительного заголовка не всегда легко.
С некоторыми mailx
реализации, например, от mailutils
на Ubuntu или Debian bsd-mailx
, это легко, потому что существует опция для этого.
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
С Семейная реликвия mailx
нет никакого удобного способа. Одна возможность вставить произвольные заголовки состоит в том, чтобы установить editheaders=1
и используйте внешнего редактора (который может быть сценарием).
## Prepare a temporary script that will serve as an editor.
## This script will be passed to ed.
temp_script=$(mktemp)
cat <<'EOF' >>"$temp_script"
1a
Content-Type: text/html
.
$r test.html
w
q
EOF
## Call mailx, and tell it to invoke the editor script
EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF
~e
.
EOF
rm -f "$temp_script"
С общим POSIX mailx
, Я не знаю, как достигнуть заголовки.
Если Вы собираетесь использовать кого-либо mail
или mailx
, имейте в виду это
mail
и mailx
.mail
и mailx
начало строк обработок ~
как команды. Если Вы передаете текст по каналу в mail
, необходимо принять меры, чтобы этот текст не содержал начало строк ~
.Если Вы собираетесь установить программное обеспечение так или иначе, Вы могли бы также установить что-то более предсказуемое, чем mail
/Mail
/mailx
. Например, дурак. С Дураком можно предоставить большинство заголовков во входе с -H
опция, но нет Content-Type
, который должен быть установлен через опцию дурака.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
Или можно вызвать sendmail
непосредственно. Существует несколько версий sendmail
там, но они все поддерживают sendmail -t
отправить почту самым простым способом, читая список получателей от почты. (Я думаю, что они все не поддерживают Bcc:
.) В большинстве систем, sendmail
не находится в обычном $PATH
, это находится в /usr/sbin
или /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
Необходимо будет добавить Content-Type
заголовок на Ваш адрес электронной почты, чтобы заставить это произойти.
echo "<html><b>Hello</b></html>" | mail -a "Content-type: text/html;" -s "Testing" me@example.com
будет работать
mailx
? Это могло бы иметь опцию. Если это не работает. Если это не работает, можно рассмотреть использование дурака, хотя я не знаю от руки, что переключатели командной строки сделать это.
– Noufal Ibrahim
22.06.2011, 10:04
#!/bin/sh
(
echo "To: me@example.com"
echo "Subject: hello"
echo "Content-Type: text/html"
echo
echo "<html><b><font size='7'>H</font>ello</b></html>"
echo
) | /usr/sbin/sendmail -t
mail
.
–
17.10.2012, 22:09
С помощью heirloom-mailx вы можете изменить программу sendmail на свой сценарий ловушки, заменить там заголовки и затем использовать sendmail.
Используемый мной сценарий ( ~ / bin / sendmail-mailx-hook
):
#!/bin/bash
sed '1,/^$/{
s,^\(Content-Type: \).*$,\1text/html; charset=utf-8,g
s,^\(Content-Transfer-Encoding: \).*$,\18bit,g
}' | sendmail $@
Этот сценарий изменяет значения в заголовке почты следующим образом:
Content-Type:
в text / html; charset = utf-8
Content-Transfer-Encoding: с
до 8bit
(не уверен, действительно ли это необходимо). Чтобы отправить электронное письмо в формате HTML:
mailx -Ssendmail='~/bin/sendmail-mailx-hook' -s "subject" xxxxx@gmail.com < test.html
Этот метод более эффективен, чем предложенный @Gilles, поскольку он не создает временные файлы, а просто исправляет поток на лету.
Мне нужно было указать переменную, такую как SMTP-сервер, поэтому почтовая команда работала следующим образом. Я просмотрел много сообщений и нашел ниже свойство для преобразования тела в text / html. Теперь письмо, которое я получаю, имеет формат HTML.
Content-Disposition: встроенный
Версия Unix: Red Hat Enterprise Linux Server, выпуск 6.6 (Сантьяго)
Первый. Создайте любую необходимую информацию в скрипте (testSql.sh)
echo "<html><body><pre>"
mysql -u USERNAME -pPASSWORD -P PORTNUMBER -h HOSTNAME DBNAME --table -e "select columns from tablename where member in ('value1','value2')"
echo "</pre></body></html>"
Второй. Передайте этот скрипт команде mail
./testSql.sh | mail -v -S smtp=smtp://IP:PORTNUMBER -s "$(echo -e "This is the subject\nContent-Type: text/ht ml\nMIME-Version: 1.0\nContent-Disposition: inline")" userid@email.com
Таким образом я получаю в электронном письме информацию, как показано ниже:
Content-Disposition: inline Message-ID: User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Value1 Value2
Value1 и Value2 согласно тегам HTML, сделанным в testSql.sh
Я использовал следующие сценарии,
#!/bin/ksh
(
echo "To: yourmail@domain.com"
echo "Subject: Job Status"
echo "Content-Type: text/html"
echo
echo "<html>
<head>
<title>Status of the jobs during the day</title>
<style>
table, th, td {
border: 1px solid blue;
border-collapse: collapse;
}
th, td {
padding: 5px;
}
</style>
</head>
<body>
<table style='width:100%'>
<tr bgcolor='#808080'>
<th>Job Name</th>
<th>System name</th>
<th>Status</th>
</tr>
<tr>
<td>Job-1</td>
<td>Sys</td>
<td>Sucess</td>
</tr>
<tr>
<td>Job-2</td>
<td>sys</td>
<td>Failure</td>
</tr>
<tr>
<td>Job-3</td>
<td>sys</td>
<td>Sucess</td>
</tr>
</table>
</body></html>"
echo
) | /usr/sbin/sendmail -t
Опубликовано в другой теме, но в основном в нашей версии mail/mailx (12.5+ )параметр -a для почты больше не работает, так как он добавляет вложение, и я не смог найти замену для дополнительных заголовков, поэтому самым простым способом для меня было использовать sendmail.
Ниже приведен простой 1 лайнер, который я создал для запуска в нашем сценарии bash, который работает для нас. Он просто передает Content -Type :text/html, subject и body и работает.
printf "Content-Type: text/html\nSubject: Test Email\nHTML BODY<b>test bold</b>" | sendmail <Email Address To>
Если вы хотите создать целую html-страницу из переменной, альтернативный метод, который я использовал в сценарии bash, заключался в передаче переменной, как показано ниже.
emailBody="From: <Email Address From>
Subject: Test
Content-Type: text/html; charset=\"us-ascii\"
<html>
<body>
body
<b> test bold</b>
</body>
</html>
"
echo "$emailBody" | sendmail <Email Address To>