【场景】通过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 系统中使用 crontab 执行 jar 文件时,输出结果中出现中文乱码的原因是由于 Unix/Linux 下的 crontab 环境与用户环境的差异。通常情况下,用户环境中会设置一些环境变量,例如语言环境变量 LANG,...
Linux 下 Crontab 命令 Crontab 是 Linux 中一个非常强大的功能,它允许用户在固定时间或固定间隔执行某个程序。Crontab 命令是用来设置和管理这些自动执行程序的。下面是 Crontab 命令的详细介绍: 语法 Crontab...
Linux Crontab 是一个强大的定时任务命令,用于在指定的时间间隔执行特定的命令或程序。Crontab 命令的功能是在一定的时间间隔调度一些命令的执行,通过编写 Crontab 文件来实现。 1. Crontab 介绍 Crontab 命令的...
在Linux系统中,Crontab...总结来说,Linux CentOS 7的Crontab离线安装包提供了在无网络环境下安装和管理定时任务的能力,通过RPM包管理方式,我们可以方便地在系统中部署和配置Crontab,实现自动化维护和管理工作。
crontab 命令是 Unix 和类 Unix 操作系统中设置周期性被执行的指令的命令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 crontab 命令的主要功能是用于设置周期性被执行的...
crontab命令是Linux系统下的定时任务触发器,它允许用户设置定期执行的任务。crontab命令的使用非常广泛,包括系统执行的工作和个人执行的工作。 系统执行的工作 系统执行的工作是指系统周期性所要执行的工作,如...
在Linux系统中,`crontab` 是一个强大的任务调度工具,用于自动化周期性的系统或用户任务。然而,有时我们可能会遇到这样的问题:在终端中能够正常运行的shell脚本(`.sh` 文件),在通过`crontab` 安排时却无法执行...
Linux 定时执行 Crontab 命令使用介绍借鉴 Linux 系统中的 Crontab 命令是一个非常有用的工具,用于在指定的时间执行某个任务或命令。Crontab 命令是基于 Cron 服务的,它可以让用户在指定的时间执行某个任务,例如...
标题 "OS + Linux crontab / top / ntpdate / nmon" 提及了四个重要的 Linux 系统管理和监控工具,这些工具对于任何系统管理员来说都是必不可少的。下面将详细介绍这些工具及其在Linux操作系统中的作用。 1. **...
### Linux Crontab命令详解与应用实例 Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。Cron通过读取每个用户的crontab文件来确定哪些任务需要被执行,以及何时执行。本文将深入解析Crontab命令...
Crontab 文件的每一行由六个字段组成,前五个字段定义了任务执行的时间,最后一个字段则指定了要执行的命令。具体格式如下: ``` * * * * * command ``` 其中,每个星号代表的时间单位及其范围如下: - 第一个星号...
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。 service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //...
crontab 是 Linux 中的一个定时器命令,允许用户在固定时间或固定间隔执行程序。它类似于用户的时程表,能够让用户在特定的时间执行特定的程序。 使用权限:所有用户都可以使用 crontab 命令,包括 root 用户和普通...
`crontab` 是 Linux 和 Unix-like 操作系统中一个非常重要的工具,用于设置周期性执行的任务。通过编写 crontab 文件(cron job),用户可以指定某个脚本或命令在特定的时间点自动运行。 #### 二、crontab命令格式 ...
`crontab`是一个Unix/Linux系统中的计划任务调度命令,它允许用户按照设定的时间间隔运行指定的程序或脚本。原生的`crontab`依赖于系统的守护进程,可能在资源有限的环境中不那么理想。Go语言版本的`crontab`可能...
Linux中的`crontab`命令是用于管理定时任务的关键工具,它允许系统管理员或普通用户在特定的时间间隔执行预定的命令或脚本。这个功能在自动化维护、数据备份、日志清理等场景中非常有用。以下是对`crontab`命令的...
Crontab命令是Linux操作系统中用于管理定时任务的重要工具,它允许用户设置周期性被执行的任务。这些任务可以是系统维护、数据备份或是其他自动化任务。Crontab命令提供了方便的方式来创建、查看和删除这些定时任务...
在Linux系统中,crontab命令是一个非常有用的工具,它可以帮助用户实现定时任务的执行。通过crontab命令,用户可以在指定的时间执行特定的命令或程序,这使得系统管理员可以更方便地管理系统和执行定期任务。 ...
Linux下的crontab定时执行任务命令详解 在Linux操作系统中,`crontab`是一个强大的定时任务调度器,用于在设定的时间间隔执行指定的命令或脚本。它依赖于名为`cron`的守护进程,该进程会在后台持续运行,按照预定义...