Почему эта работа cron не работает?

Я использую Ubuntu 14.04 и создал в следующем скрипте внутри /etc/cron.hourly и сделал его исполняемым

имя файла: remove_old_tmux_resurrect_saves

#! /bin/bash

ls ~/.tmux/resurrect/* -1dtr | head -n -10 | xargs -d '\n' rm -f



$ ls -al ~/.tmux/resurrect/

total 120
drwxrwxr-x 3 admin admin 61440 Nov 22 16:35 .
drwxrwxr-x 4 admin admin  4096 Nov  5 04:02 ..
lrwxrwxrwx 1 admin admin    38 Nov 22 16:35 last -> tmux_resurrect_2015-11-22T16:35:29.txt
drwxrwxr-x 2 admin admin  4096 Nov 22 16:35 pane_contents
-rw-rw-r-- 1 admin admin 11237 Nov 22 16:35 pane_contents.tar.gz
-rw-rw-r-- 1 admin admin   692 Nov 22 02:53 tmux_resurrect_2015-11-22T02:53:49.txt
-rw-rw-r-- 1 admin admin   692 Nov 22 05:09 tmux_resurrect_2015-11-22T05:09:18.txt
-rw-rw-r-- 1 admin admin   692 Nov 22 05:24 tmux_resurrect_2015-11-22T05:24:20.txt
-rw-rw-r-- 1 admin admin   692 Nov 22 05:39 tmux_resurrect_2015-11-22T05:39:23.txt
-rw-rw-r-- 1 admin admin   795 Nov 22 05:41 tmux_resurrect_2015-11-22T05:41:37.txt
-rw-rw-r-- 1 admin admin   795 Nov 22 05:54 tmux_resurrect_2015-11-22T05:54:32.txt
-rw-rw-r-- 1 admin admin   795 Nov 22 16:05 tmux_resurrect_2015-11-22T16:05:08.txt
-rw-rw-r-- 1 admin admin   943 Nov 22 16:20 tmux_resurrect_2015-11-22T16:20:15.txt
-rw-rw-r-- 1 admin admin   795 Nov 22 16:35 tmux_resurrect_2015-11-22T16:35:29.txt

Когда я запускаю его вручную работает нормально, когда я проверяю, что cron принял его как задание, он работает нормально, т.е.

sudo run-parts --test /etc/cron.hourly

вывод

/etc/cron.hourly/remove_old_tmux_resurrect_saves

вывод cat /etc/crontab

$ cat crontab 
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
  • Что должно произойти : скрипт удаляет все файлы в этом каталог, кроме самого последнего 10
  • Что происходит : ничего

У кого-нибудь есть идеи, почему это не работает?

0
задан 22 November 2015 в 06:51

1 ответ

cron.hourly файл remove_old_tmux_resurrect_saves работает как пользователь root (следовательно ~, обращается к корневому каталогу root), и Вы ищете файлы в корневом каталоге пользователя admin.

Замена ~ с полным путем к корневому каталогу пользователя admin.

Поочередно, можно открыть пользователя admin crontab путем выполнения crontab -e как пользователь admin и поместить запись там.

Также примечание, что парсинг ls не является хорошей идеей вообще и независимо от того, что Вы делаете, может быть сделано с другими инструментами легко, и Вам даже не нужен сценарий.

1
ответ дан 22 November 2015 в 16:51
  • 1
    Спасибо! Я смог заставить его работать с Типом приложения, но у меня была точно проблема, которую Вы описали Firefox, сгруппированного под значком. Ваше решение, однако, намного более изящно. – DanielB 13 February 2017 в 07:26

Другие вопросы по тегам:

Похожие вопросы: