Dev O'Connor Ответов: 1

Служба Unix-состояние-все / команда grep в сообщение электронной почты - команда не найдена.


Вечер

я пытаюсь автоматизировать электронную почту о состоянии службы из выбранного числа служб. когда я запускаю скрипт с помощью sh-x ./myscriptname.sh это работает абсолютно нормально. Но при установке в качестве cron я получаю постоянную ошибку
service: command not found

Сценарий оболочки выглядит следующим образом:
#!/bin/sh
service --status-all | grep 'tomcat\|xcoder\|sshd\|xinetd' | mail -s "$(hostname) Daily Service Status Monitor"  -r "no-reply@no-company.com" -S smtp="x.x.x.x:25" my.email@address.co.uk

Почта, которую я получаю, это:
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Date: Mon,  4 Dec 2017 19:32:01 +0000 (WET)
Status: R

/etc/cron.daily/myscriptname.sh: line 2: service: command not found
Null message body; hope that's ok


буду признателен, если кто-нибудь прольет на это свет.

Что я уже пробовал:

<pre lang="c#">
#!/bin/sh
output=$(service --status-all | grep 'tomcat\|xcoder\|sshd\|xinetd')
echo $output | mail -s "$(hostname) Daily Service Status Monitor"  -r "no-reply@no-company.com" -S smtp="x.x.x.x:25" my.email@address.co.uk

1 Ответов

Рейтинг:
6

Peter_in_2780

Он не может найти service на пути, который, как представляется, /usr/bin:/bin из письма. Я не знаю, какой дистрибутив вы используете, но мой Ubuntu 16.04 LTS имеет его в /usr/sbin/service
Воспользуйся which service чтобы найти его и соответствующим образом настроить свой сценарий.


Dev O'Connor

+1 @Peter_in_2780 - spot on advice - сработало лакомство

Peter_in_2780

Всегда пожалуйста! cron jobs не может запускать все ваши хорошие сценарии запуска :p укусил меня несколько раз.