Por que este trabalho do cron não está funcionando?

0

Estou usando o Ubuntu 14.04 e criei o seguinte script dentro de /etc/cron.hourly e tornei-o executável

nome do arquivo: 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

Quando eu o executo manualmente, ele funciona bem, quando eu verifico que o cron aceitou isso como um trabalho, ele funciona bem, por exemplo

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

saída

/etc/cron.hourly/remove_old_tmux_resurrect_saves

saída de 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 )
#
  • O que deve acontecer : o script exclui todos os arquivos desse diretório, exceto os 10
  • mais recentes
  • O que acontece : nada

Alguém tem alguma ideia de por que isso não está funcionando?

    
por the_velour_fog 22.11.2015 / 04:48

1 resposta

1

O cron.hourly file remove_old_tmux_resurrect_saves está sendo executado como usuário root (portanto, ~ refere-se ao diretório inicial de root ) e você está procurando arquivos no diretório inicial do usuário admin .

Substitua ~ pelo caminho absoluto para o diretório inicial do usuário admin .

Como alternativa, você pode abrir o crontab do usuário admin executando crontab -e como usuário admin e colocando uma entrada lá.

Observe também que analisar ls não é uma boa ideia e tudo o que você está fazendo pode ser feito facilmente com outras ferramentas e você nem precisa de um script.

    
por heemayl 22.11.2015 / 05:01