为什么这个 cron 任务不起作用?

为什么这个 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 个文件之外的所有文件
  • 什么发生: 没有什么

有谁知道为什么这不起作用吗?

答案1

cron.hourly文件remove_old_tmux_resurrect_saves以用户身份运行root(因此~指的是 的主目录root),并且您正在用户 的主目录中搜索文件admin

替换~为用户主目录的绝对路径admin

另外,您可以以用户身份admin运行来打开用户的 crontab并在其中放置一个条目。crontab -eadmin

还要注意,解析根本ls不是一个好主意,无论您做什么都可以用其他工具轻松完成,甚至不需要脚本。

相关内容