centos7 crontab定时任务/bin/sh: root: command not found
错误信息
From root@lidong.novalocal Wed Mar 16 02:30:01 2022
Return-Path: <root@lidong.novalocal>
X-Original-To: root
Delivered-To: root@lidong.novalocal
Received: by lidong.novalocal (Postfix, from userid 0)
id 16CDC9178D; Wed, 16 Mar 2022 02:30:01 +0000 (UTC)
From: "(Cron Daemon)" <root@lidong.novalocal>
To: root@lidong.novalocal
Subject: Cron <root@lidong> root /var/www/run.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=2512>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20220316023001.16CDC9178D@lidong.novalocal>
Date: Wed, 16 Mar 2022 02:30:01 +0000 (UTC)
/bin/sh: root: command not found
shell脚本
#!/bin/bash
echo 'run program start'
/usr/local/bin/python3 /var/www/run.py
echo 'run program finish'
命令crontab -e(错误写法)
* * * * * root /var/www/run.sh
命令crontab -e(正确写法)
- 无需加入root,具体如下。
* * * * * /var/www/run.sh
/etc/crontab文件和crontab -e命令区别
1、格式不同
前者
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
后者
* 1 * * * command
2、使用范围
- 修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,
- crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename