【场景】通过crontab执行java命令
【问题】尽管已设置/etc/profile和/root/.bash_profile中环境变量
////////begin//////
# remedied by can_do on 2020-03-07
export JAVA_HOME=/opt/jdk
export PATH=${JAVA_HOME}/bin:${PATH}
export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/jre/lib/rt.jar
////////end////////
但crontab中设置的java命令还是不能执行,而在root用户的shell窗口下是可以成功执行java命令的,说明环境变量配置是OK。
////////////execute in failure///////begin/////
From root@cnd-centos.localdomain Thu Jun 24 20:42:02 2021
Return-Path: <root@cnd-centos.localdomain>
X-Original-To: root
Delivered-To: root@cnd-centos.localdomain
Received: by cnd-centos.localdomain (Postfix, from userid 0)
id 2A2A761C20; Thu, 24 Jun 2021 20:42:02 +0800 (CST)
From: "(Cron Daemon)" <root@cnd-centos.localdomain>
To: root@cnd-centos.localdomain
Subject: Cron <root@cnd-centos> /opt/shell/yourShellScript.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=13>
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: <20210624124202.2A2A761C20@cnd-centos.localdomain>
Date: Thu, 24 Jun 2021 20:42:02 +0800 (CST)
/opt/shell/yourShellScript.sh: line 9: jstat: command not found
/opt/shell/yourShellScript.sh: line 11: jstat: command not found
The current pid is 1876.
Eden percent is .
Old percent is .
/opt/shell/yourShellScript.sh: line 21: [: -gt: unary operator expected
////////////execute in failure///////end/////
【解决方法】
显示告诉os,通过root用户执行java命令,如下:
su - -c "/opt/shell/yourShellScript.sh"
////////////execute in success/////////begin///////
From root@cnd-centos.localdomain Thu Jun 24 20:44:02 2021
Return-Path: <root@cnd-centos.localdomain>
X-Original-To: root
Delivered-To: root@cnd-centos.localdomain
Received: by cnd-centos.localdomain (Postfix, from userid 0)
id 5A47961C20; Thu, 24 Jun 2021 20:44:02 +0800 (CST)
From: "(Cron Daemon)" <root@cnd-centos.localdomain>
To: root@cnd-centos.localdomain
Subject: Cron <root@cnd-centos> su - -c "/opt/shell/yourShellScript.sh"
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=15>
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: <20210624124402.5A47961C20@cnd-centos.localdomain>
Date: Thu, 24 Jun 2021 20:44:02 +0800 (CST)
The current pid is 1876.
Eden percent is 20.
Old percent is 3.
////////////execute in success/////////end///////
【小结】
1> 引起该问题的原因,是多用户下导致的环境变量选择问题,su -相当切到root下执行,前提是环境变量已配置ok;
2> Linux启动脚本/etc/rc.local中命令执行不成功,除了chmod +x权限外,也需要调整为su - -c "yourScript"
3> 通过系统日志分析问题原因tail -f /var/log/boot.log,也是关键一步;
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。 如: 代码如下:[root@dave ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin ...
linux C7 crontab离线安装包
该文件具体的介绍了crontab自动执行程序的设置
crontab命令的功能是在一定的时间间隔调度一些命令的执行。
Linux下crontab命令的用法[归类].pdf
Linux中使用crontab自动清除日志,Linux中使用crontab自动清除日志,Linux中使用crontab自动清除日志
Linux crontab 命令格式与详细例子
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。 service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //...
linux中的定时器命令--crontab
cron的配置文件称为“crontab”,是“cron table”的简写。这篇文章主要介绍了Linux下的crontab定时执行任务命令详解,需要的朋友可以参考下
linux crontab 详解,共享快乐
linux定时执行,crontab命令使用介绍.pdf
命令可以正常 执行,但sh文件不能执行分析
linux定时执行,crontab命令使用介绍借鉴.pdf
Crontab命令
Linux定时脚本crontab中文乱码.docx
springboot的定时任务配置和linux的crontab一样例子.zipspringboot的定时任务配置和linux的crontab一样例子.zipspringboot的定时任务配置和linux的crontab一样例子.zip
关于linux命令crontab的用法,自己总结的 包含简单的用法