Я пытаюсь настроить cronjob, чтобы каждый час получать данные ifstat с удаленного сервера и записывать данные в файл .txt. Я написал скрипт на python для запуска ifstat (который работает, когда я запускаю его независимо от cronjob), и я протестировал синтаксис cronjob, который кажется правильным.
Я попытался протестировать синтаксис cronjob с помощью другого (почти идентичного) сценария, выполняющего функцию netstat -s вместо ifstat, и она работает без каких-либо проблем. Сценарий ifstat работает правильно при вызове непосредственно в оболочке linux.
Это скрипт, который у меня есть - я недавно добавил дату для устранения неполадок.
#!/usr/bin/python
import subprocess, sys
import datetime
cmd = 'ifstat'
p = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
print('\n')
print(datetime.datetime.today())
Это у меня cronjob.
0 * * * * ./data/ifstat.py >> data/ifstat.txt
РЕДАКТИРОВАТЬ: я сделал небольшое изменение в коде, удалив переменную cmd и добавив ifstat непосредственно в функцию Popen. Приведенный выше код вызывал функцию ifstat в отдельной команде (т. Е. В новой строке в оболочке) после выполнения даты. Новый код запускается непосредственно все в одной строке.
Также для дополнительной информации. Когда я запускаю скрипт напрямую и добавляю текст, он работает. Только кажется, что не работает в cronjob ...
./ifstat.py >> ifstat.txt
^ это работает из каталога, содержащего оба файла