Встала необходимость сделать так, чтобы в последнюю среду месяца (санитарный день) компьютер выключался самостоятельно несколько раньше, чем обычно. Пошарив немного по руководству cron понял, что вот прямо так сделать никак нельзя. Можно лишь указать промежуток времени особым способом, то есть, можно сказать, что я хочу, чтобы в конце месяца (задаётся числовым промежутком) и если день равен, скажем, среде, выключать в не в 18:00, а в 16:00. Но в этом случае, оно не будет проверять, что оба условия выполняются, а будет делать это если хотя бы одно выполнено.
Поэтому надо было сделать что-то чуть более сложное. В результате, я написал код на питоне. Совсем короткий и простой, но всё же:
Поэтому надо было сделать что-то чуть более сложное. В результате, я написал код на питоне. Совсем короткий и простой, но всё же:
Работает нормально. Добавил задание в cron.import osimport timefrom datetime import dateif 31 - date.today().day < 7 and date.today().weekday() == 2:os.system('/sbin/poweroff')quit()
К слову, скобочки в if лишние (и вообще не python-way). и quit() зачем нужен?
ОтветитьУдалитьСкобки никогда не будут лишние, если сомневаешься, что выполнится именно в той последовательности, которую предполагаешь, или хочешь улучшить читаемость.
Удалитьquit() добавил потому, что не знал, завершится ли после окончания выполнения процесс интерпретатора. Я ведь никогда ничего сложнее "Hello, World!" не писал на python.
Обрамляющие скобки точно не нужны, можно написать:
Удалитьif 31 - date.today().day < 7 and date.today().weekday() == 2:
уверенность в последовательности это же не изменит
А fcron это не умеет? http://fcron.free.fr/
ОтветитьУдалитьО нём впервые слышу. И ставить его для того, чтобы выполнять некие рутинные задачи, вроде этой смысл невелик. Но есть.
УдалитьСпасибо, позже прочитаю о нём чуть более.