Один из способов заключается в использовании acct
бухгалтерских утилит.
Из описания пакета Debian:
$ apt-cache show acct
Package: acct
Version: 6.6.4-2
Installed-Size: 341
Maintainer: Debian Security Tools
Architecture: amd64
Depends: libc6 (>= 2.14), lsb-base
Description-en: GNU Accounting utilities for process and login accounting
GNU Accounting Utilities is a set of utilities which reports and summarizes
data about user connect times and process execution statistics.
.
"Login accounting" provides summaries of system resource usage based on connect
time, and "process accounting" provides summaries based on the commands
executed on the system.
.
The 'last' command is provided by the sysvinit package and not included here.
Домашняя страница:http://www.gnu.org/software/acct/
Этот пакет включает в себя средство создания отчетов под названием sa
. Возможно, вам придется написать сценарии в awk
или perl
или что-то еще, чтобы опубликовать вывод -процесса sa
в нужной вам форме.
Если ваша ОС по умолчанию использует почтовую систему, аналогичную sendmail
-, вы можете использовать пользовательский файл mailer.conf
, который, в свою очередь, вызывает пользовательский сценарий оболочки, который обрабатывает выходные данные задания cron
так, как вы хотите.
Для этой настройки требуетсяsendmail
-подобная среда, но сам демон sendmail
должен быть отключен, т. е. не запущен.
Начните с создания простого mailer.conf
файла, в котором будет определен замещающий сценарий оболочки, функционирующий как компонент sendmail
для «отправки» почты, а также создайте сам сценарий оболочки:
printf 'sendmail\t/etc/mail/mail-script.sh\n' > /etc/mail/mailer.conf
cat << 'EOF' > /etc/mail/mail-script.sh
#!/usr/bin/env bash
{
date
printf -- '--- BEGIN\n'
cat
printf -- '--- END\n'
} >> /var/log/cron-jobs.log
EOF
chmod 755 /etc/mail/mail-script.sh
Это завершает «электронную» часть набора -. Теперь давайте создадим пример задания cron, которое мы можем протестировать с помощью :
.cat << 'EOF' > /root/testjob.sh
#!/usr/bin/env bash
printf 'This is a test cron job run at %s\n' "$(date)"
EOF
chmod 755 /root/testjob.sh
Наконец, мы создадим запись в /etc/crontab
, которая будет запускаться /root/testjob.sh
раз в минуту:
cat << EOF >> /etc/crontab
MAILTO="foobar"
* * * * * root /root/testjob.sh
EOF
Должна присутствовать запись MAILTO
, (, иначе письмо не будет создано ),но произвольно. Если бы вы хотели, вы могли бы определить определенные имена MAILTO
для разных целей и обрабатывать выходные данные задания cron
по-разному, в зависимости от того, какая MAILTO
маркирует ссылки задания cron
.
Со всем этим мы находим следующий вывод, накапливающийся в/var/log/cron-jobs.log
:
# tail -f /var/log/cron-jobs.log
Tue Oct 12 14:11:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
This is a test cron job run at Tue Oct 12 14:11:00 PDT 2021
--- END
Tue Oct 12 14:12:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
This is a test cron job run at Tue Oct 12 14:12:00 PDT 2021
--- END
Tue Oct 12 14:13:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
This is a test cron job run at Tue Oct 12 14:13:00 PDT 2021
--- END
Tue Oct 12 14:14:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
This is a test cron job run at Tue Oct 12 14:14:00 PDT 2021
--- END
Tue Oct 12 14:15:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
This is a test cron job run at Tue Oct 12 14:15:00 PDT 2021
--- END