Linux执行Cron Job失败,在Shell sh下执行却能成功 - 环境变量?

一、我们常常碰到在shell下执行某个命令能够成功,比如执行一个java程序:

java -jar /home/opscoder/topo-audit.jar,但是在crontab下执行会失败。

cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar: 即每天10点去执行这个jar中的main方法

二、查找失败的原因,即查看crotab的执行log, 有如下3种方法,我所用的是ubantu的机器,使用的是方法1、 mail任务(Linux UNIX)在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

 

2、针对UINX系统查询方法(AIX、HP-UX)

在 /var/spool/cron/tmp文件中,有croutXXX00999的tmp文件,tail 这些文件就可以看到正在执行的任务了。

 

3、针对Linux系统的查询方法(含Redhat、SUSE)

看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察

配图为系统aix root用户默认的crontab

 

三、针对我的情况,从log中可以看出是/bin/sh: java command not found

这就说明了cron使用的环境变量不是系统的环境变量,而是自己的环境变量,说白了,就是crontab不能读取到/etc/profile下的信息。

 

四、解决方法:

1、修改crontab来调用一个脚本,而不是直接执行这个jar

即将:cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar

修改为:0 10 * * * /home/opscoder/topo-check.sh

 

2、创建topo-check.sh

touchtopo-check.sh   #创建topo-check.sh文件
vi topo-check.sh         #编辑topo-check.sh文件,并输入如下内容


#!/bin/bash
source /etc/profile
java -jar /home/opscoder/topo-audit.jar


保存退出。
chmod +x topo-check.sh    #给topo-check.sh可执行权限

这样就大功告成了,需要注意的是需要加上#!/bin/bash,不然crontab可能还是不能执行成功,使用如上的3中方法之一来查看crontab的log,你会发现类似: /bin/sh command /home/opscoder/topo-check.sh not found

 

附:如果当前用户不能启动crontab,可以使用具有sudo权限或者具有启动权限(service)的用户先启动crontab(service cron status, service cron start, service cron start),然后再切回该用户创建或者cron job(crontab -e)

 

 

Linux定时任务提权实战:从Cron Job到Root Shell的权限提升 在Linux系统安全中,定时任务(Cron Job)是自动化运维的核心组件,它允许系统在预定时间执行特定脚本或命令。其运行机制基于权限继承原理,即以定义任务时指定的用户身份执行命令。这一机制在配置不当时会带来严重的安全风险,尤其是当高权限任务(如root)执行的脚本文件权限设置存在缺陷时。从技术价值看,理解Cron任务与文件权限的交互关系,是掌握Linux权限模型和提权(Privilege Escalation)基础的关键。在渗透测试和系统安全审计中,攻击者常通过寻找全局可写(World-writable) 阅读详情

相关推荐

CentOS 8 cron 定时任务原理与生产级实践指南

Cron 是 Linux 系统最基础、最可靠的定时任务调度机制,其核心是基于五位 POSIX 表达式的时间匹配引擎,不依赖 shell 解析、无运行时环境继承、具备内核级稳定性和跨版本兼容性。理解其守护进程 crond 的加载逻辑、/etc/cron.d 与 /var/spool/cron 的权限隔离模型、以及 PATH 和 SHELL 环境的极简特性,是避免‘终端能跑、cron 静默失败’的关键。该机制广泛应用于数据库备份、日志轮转、证书续期等基础设施运维场景,尤其在 CentOS 8 中需结合 cron

shirlly 1058

xxjob 执行结果显示成功但是没有停止_LINUX SHELL同时执行多条命令总结

LINUX SHELL同时执行多个命令在shell中,我们经常会同时执行多条命令,多条命令之间通常有以下四种分隔符:;(封号)&&||(或)|(管道)便于实验,创建以下两个文件#cata.txt测试文件1测试文件2#cattest.pyprint("HelloPython3")1.用 ;(封号) 分隔的多条命令说明:所有命令都会执行,相当于每条命令独立执行...

weixin_39629269的博客 697

DC-7靶机渗透实战:从OSINT到Cron提权的完整攻击链剖析

在网络安全领域,渗透测试的核心在于理解攻击链的构建,其中信息收集与权限提升是关键环节。开源情报(OSINT)作为信息收集的重要手段,涉及从公开渠道获取敏感数据,如代码仓库中的配置文件泄露,这常导致凭据复用风险。Linux系统中的Cron任务作为自动化运维工具,若配置不当,如使用相对路径或目录权限过宽,可能引发权限提升漏洞。其技术价值在于揭示了安全防御中“人”与“流程”的薄弱点,尤其在混合使用社工思维与运维漏洞的场景下。应用场景广泛,包括企业内网安全评估、红队演练及CTF靶机实战。本文通过DC-7靶机实例,深

weixin_34007020的博客 669

corantab 不能自动执行的一些问题-环境变量

今天遇见一个问题,crontab的定时任务不能自动执行,但是手动执行脚本一直能成功。查到最后,发现是脚本里用了系统的环境变量。下面开始解释: 1.crontab与环境变量 不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点: 1)脚本中涉及文件路径时写全局路径; 2)脚本...

iteye_15440的博客 885

Jarbas靶机渗透实战:从信息收集到Cron提权的完整路径

渗透测试是评估系统安全性的系统性方法,其核心原理在于模拟攻击者行为,发现并利用安全漏洞。这一过程的技术价值在于帮助组织识别防御弱点,提升整体安全水位。典型的应用场景包括企业内网安全评估、Web应用漏洞挖掘等。在Linux环境中,权限提升是渗透测试的关键环节,其中配置不当的定时任务(Cron Job)是常见提权向量。本文以Jarbas靶机为例,详细演示了如何通过信息收集、Web渗透获取初始访问,并最终利用Cron任务实现权限提升,涵盖了Nmap、Gobuster、SQL注入等热词技术的实战应用。

weixin_30608503的博客 317

Windows 10 下 Nacos 3.0.2 单机版保姆级安装教程(含JDK 17配置与MySQL 8.0连接避坑)

本文提供Windows 10下Nacos 3.0.2单机版的详细安装教程,涵盖JDK 17配置、MySQL 8.0连接优化及生产级安全设置。通过步骤详解和常见问题解决方案,帮助开发者快速完成Nacos的安装与配置,确保服务发现与配置管理的高效运行。

weixin_29237635的博客 320

crontab 定时任务报错 java: command not found

在原来服务器上写的定时任务,在任务转移之后定时任务不能成功执行,脚本没问题,用 sh 命令可以执行,但是目标地点没有数据,日志显示报错 : From root@bd-bi-node06.localdomain Wed Jun 26 16:11:01 2019 Return-Path: <root@bd-bi-node06.localdomain> X-Original-To: roo...

weixin_43038063的博客 2276

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 326

crontab java job_crontab 命令行执行成功,定时任务报错

crontab的定时任务不能自动执行,但是手动执行脚本一直能成功。查到最后,发现是脚本里用了系统的环境变量。1.因为我只有普通用户(sh用户)的权限,首先自己可以写一个简单的脚本测试一下自己计划任务能否使用。(我的可以)2.手动执行你的脚本(确认脚本没有问题)1)脚本中涉及文件路径时写全局路径;[sh@sh yoon]$catstart.sh$SPARK_HOME/bin/spark-submi...

weixin_39548193的博客 362

WSL2+Ubuntu-22.04搭建PX4仿真环境:从零避坑到一键起飞

本文详细指导在Windows系统上通过WSL2和Ubuntu-22.04搭建PX4仿真开发环境的完整流程,涵盖环境配置、源码下载、依赖安装、Gazebo仿真及常见错误解决方案,帮助开发者从零避坑实现无人机一键起飞仿真。

k8s6orchestrator的博客 670

手把手教你用MOS管设计双电源自动切换电路(附零压降方案)

本文详细介绍了使用MOS管设计双电源自动切换电路的完整方案,包括基础电路拓扑、零压降优化设计及实战调试技巧。针对外接电源与电池供电的无缝切换需求,提供低损耗MOS管选型建议和性能实测数据,帮助工程师解决传统二极管方案的压降与漏电问题。

h0i1j2k3l的博客 1447

CentOS 8 cron执行失败的根因与实战排错指南

Cron是Linux系统最基础的自动化任务调度机制,其核心原理是基于时间表达式的周期性触发与环境隔离执行。在CentOS 8中,由于默认启用严格SELinux策略、精简PATH环境变量、区分用户级与系统级crontab,以及时区与上下文标签的强约束,导致大量原有脚本静默失效。技术价值在于保障最小权限安全模型下的可靠调度,典型应用场景包括数据库备份、日志轮转、健康检查等运维自动化任务。本文聚焦CentOS 8环境下cron任务‘不执行’这一高频故障,结合SELinux上下文、PATH断裂、时区偏移、环境变量缺

weixin_30572613的博客 373

告别手动读摘要!爬虫+大模型做学术助手:爬知网论文,10秒生成摘要+关键词(附完整代码)

知网的官方摘要往往冗长(200-300字),关键词可能不够精准,用大模型提炼“100字精简摘要”和“3-5个核心关键词”,更适合快速筛选文献。这套学术助手的核心价值,是把“找论文、读摘要、提关键词”这些重复劳动,交给爬虫和大模型自动化完成,让科研人从繁琐的文献整理中解放出来,把时间花在实验设计、数据分析等核心工作上。需要注意的是:爬取知网论文仅用于个人科研和学习,不得用于商业用途,遵守知网的用户协议和版权规定;大模型生成的摘要和关键词需后续核对原文,确保准确性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1942

Linux Cron定时任务实战:编写可靠每分钟执行的Shell脚本

在Linux系统运维和自动化场景中,定时任务是实现周期性作业调度的核心技术。Cron作为Unix-like系统的原生守护进程,通过crontab配置文件,依据时间表达式精准调度命令或脚本执行,是自动化运维的基石。其技术价值在于解放人力,确保任务在无人值守下可靠运行,广泛应用于服务器监控、日志清理、数据同步等场景。编写健壮的Shell脚本需重点处理环境变量、错误控制与并发锁,结合文件锁和日志重定向能有效提升任务稳定性。本文以清理日志目录为例,详解如何构建一个包含锁机制、错误处理和日志管理的生产级每分钟任务脚本

weixin_29264201的博客 285

学Simulink——基于Simulink的AUTOSAR架构下电机控制软件组件建模

本文详细介绍了在Simulink中基于AUTOSAR架构开发电机控制软件组件(SWC)的全流程。主要内容包括:首先阐述了AUTOSAR架构对汽车电子系统开发的价值,包括提高软件复用率、降低集成成本和改善验证环境。然后重点讲解了在Simulink中构建电机控制SWC的具体步骤:从创建AUTOSAR组件模型、定义数据端口和服务端口,到搭建FOC控制算法、配置运行实体,最后生成AUTOSAR描述文件和验证RTE接口。文章还提供了与基础软件(BSW)的集成方案、工程实践要点和常见问题解决方案,并以大众MEB平台等实

amy_mhd的博客 68

EPLAN中2D安装板的绘制方法示例

EPLAN中2D安装板的绘制方法示例

Robot_PLC_HMI_Automation 3221

Linux 定时任务进阶:crontab 环境变量配置、日志输出重定向与失败告警设置

使用脚本检查退出状态并发送告警(如邮件、Slack 或短信)。

ghjckjkjkjk的博客 993

在轻量化与精度之间取得平衡:YOLOv8 + GhostNet 的设计与实验分析

摘要: GhostNet系列(GhostNet、GhostNetv2、GhostNeXt)通过“幽灵特征图”技术,以极低计算量生成丰富特征,为YOLOv8提供轻量化改造方案。该技术能在减少参数量与计算量的同时保持或提升检测精度,适用于边缘设备部署。实现时需替换YOLOv8的Backbone为GhostNet模块,并通过消融实验验证其有效性。实验数据表明,改造后的模型在参数量降低30%的同时,推理速度提升28.6%,mAP@0.5最高提升1.9个百分点,平衡了轻量化与精度,为毕设提供技术创新性与工程落地性的双

m0_64661770的博客 194

Linux中crontab的坑爹环境变量问题

手动在CentOS中执行sh脚本,调用java程序,一切正常; 将该sh加入cront

Dancen的专栏 7万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux环境变量与Shell变量的本质区别与实战指南

环境变量和Shell变量是Linux进程通信与配置管理的基础机制,前者通过export导出后可被子进程继承,后者仅限当前Shell会话私有。其核心原理源于fork/exec系统调用时的环境传递规则,技术价值在于实现跨进程、跨会话、跨生命周期的配置共享与隔离。典型应用场景包括Shell脚本调试、Docker容器环境注入、systemd服务配置、cron定时任务及GUI应用启动上下文继承。本文深入剖析二者作用域差异、export本质、持久化文件(.profile/.bashrc等)加载时机,并覆盖Docker

weixin_33738555的博客 488

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

crontab的环境变量 导致定时任务执行失败的问题

目录1. 背景2. 问题2.1 问题描述2.2 问题原因3. 解决方案4. 参考文献 1. 背景 在使用腾讯云的EMR-3.2.1时,客户有个需求,需要每周定时执行balance。 balance的脚本内容如下: #!/bin/bash # It does not allow to run more than 1 Balancer process at the same time on a same hdfs-cluster. count=0 log_file=/opt/balancer/logs/bal

besmarterbestronger的博客 2302

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Linux Cron定时任务设置指南

Linux Cron定时任务设置指南

Leon_Jinhai_Sun的博客 724

Linux定时任务避坑指南:为什么你的cron脚本没执行?(附Ubuntu/Debian排查命令)

本文深入解析Linux定时任务(cron)未执行的常见原因及解决方案,涵盖服务状态检查、环境变量设置、时间格式陷阱、权限问题等关键点,并提供Ubuntu/Debian系统的具体排查命令。特别针对crontab配置中的保存并退出操作进行详细说明,帮助用户彻底解决定时任务失效问题。

weixin_30448603的博客 407

Shell脚本AES加密执行全攻略:从OpenSSL基础到生产环境部署

在Linux运维和自动化脚本开发中,保护敏感信息是核心安全需求。对称加密技术通过使用同一密钥进行加解密,为数据静态存储提供了机密性保障。AES-256-CBC作为工业标准算法,结合CBC模式与初始化向量,能有效抵御模式分析攻击,确保相同明文产生不同密文。其技术价值在于为Shell脚本中的数据库密码、API密钥等敏感数据提供静态加密保护,防止未授权访问。应用场景涵盖需要分发脚本、进行版本控制或在多租户环境运行的自动化任务。本文聚焦于利用OpenSSL工具链,实现Shell脚本的AES加密与安全执行,并深入探讨

cuiyingchan0663的博客 334
上一篇: Linux变量
下一篇: 深入浅出数据库连接池c3p0
iteye_4921
博客等级 码龄8年 25粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值