Сценарий уже записывает выходные данные в файл с именем "server_mon.txt. Я хотел бы добавить метку времени к каждой записи с целью отслеживания активности сервера.
Теперь я понимаю, что стандартный AWK не 'У меня нет встроенной функции времени / даты, которую можно легко присвоить переменной. Я попытался сделать следующее, но у меня ничего не вышло:
tail -fn0 /var/log/user | /usr/bin/awk '
BEGIN {
str = "date +%Y-%m-%d";
str = | getline date;
close str;
Ниже приведен мой полный сценарий:
#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
tail -fn0 /var/log/user | /usr/bin/awk '
/disconnect_tcp_conn/ { report("down") }
/daemon apps started/ { report("up") }
function report(curr_state, msg) {
if ( prev_state != curr_state ) {
msg = "Server is " curr_state
system("mail -s \047" msg "\047 mail@gmail.com </dev/null")
print msg | "cat>&2"
prev_state = curr_state
}
}
'
&
PID=$!
DIEAT=`expr $SECONDS + 58`
while [ -d /proc/$PID ] && [ "$SECONDS" -lt "$DIEAT" ]
do
sleep 1
done
[ -d /proc/$PID ] && kill "$PID"
wait
Ожидайте увидеть метку времени, связанную с каждой записью журнала в server_mon.txt.
Спасибо