热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux系统用户下的crontab任务不执行问题处理

需求:需要每一天对数据库做一个备份,oracle数据库,linux系统。备份命令采用最简单的导出\导入。首先确认服务器是否开启任务计划服务,只有root用户才能对crond服务进行开启和关闭[r

需求:需要每一天对数据库做一个备份,oracle数据库,linux系统。

备份命令采用最简单的导出\导入。

首先确认服务器是否开启任务计划服务,只有root用户才能对crond服务进行开启和关闭

[root@enfo124 ~]# service crond status
crond (pid  1758) is running...
[root@enfo124 ~]# service crond stop
Stopping crond:                                            [  OK  ]
[root@enfo124 ~]# su - cognos
[cognos@enfo124 ~]$ service crond status
crond is stopped
[cognos@enfo124 ~]$ su - root
[root@enfo124 ~]# service crond start
Starting crond:                                            [  OK  ]
[root@enfo124 ~]# service crond status
crond (pid  2805) is running...
[root@enfo124 ~]# su - cognos
[cognos@enfo124 ~]$ service crond status
crond (pid  2805) is running...
最初sh文件内容为

------------------------------------------------------------

#!/bin/bash
expdp username/password@enforc directory=kettledb dumpfile=enforc_$(date +%Y%m%d%H%M).dmp logfile=enforc_$(date +%Y%m%d%H%M).log

-----------------------------------------------------------

文件名字与路径

 /home/oracle/bin/export_enforc.sh

部署开始,切换至oralce用户,查看oracle用户的crontab 计划(crontab -l)。进入任务计划的编辑模式(crontab -e)

添加入以下行:

30 18 * * * /home/oracle/bin/export_enforc.sh

每天18:30分执行export_enforc.sh文件,结果不执行,手工赋值执行/home/oracle/bin/export_enforc.sh是可以的。

于是看了前辈写的sh后说执行的环境不对于是加入以下几行:

#!/bin/bash
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
expdp username/password@enforc directory=kettledb dumpfile=enforc_$(date +%Y%m%d%H%M).dmp logfile=enforc_$(date +%Y%m%d%H%M).log

执行命令:

[oracle@enfo212 ~]$ cd ~/
[oracle@enfo212 ~]$ pwd
/home/username

----------可以看出来~/代表用户家目录/home/username。

. 文件= bash 文件 (执行shell文件)

由此可以看出-f查找如果目录存在这个系统环境文件则执行,建造一个shell环境,每个用户都有自己的.bash_profile

再次部署到crontab里面可以看到:

随便部署一个将要发生的时间点,任务被执行,这样就每天在这个时间点就对数据库enforc坐了导出的工作

具体为什么加入哪些代码?可以参考 /home/username/.bash_profile 文件

PS:总结crontab任务不执行可以从这些方面入手

1:请确保手工可以执行该文件(给sh文件增加X权限看文件格式是否为unix→ set ff? →set ff=unix)

2:确认开始crond服务(service crond status/start/stop

3: 确认给sh文件制定bash环境

if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi

 

 

 

 

 

 

 

 

 


推荐阅读
  • 前言crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较 ... [详细]
  • 这篇文章将为大家详细讲解有关如何解析crontabphp自动运行,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。cront ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 1crond服务未启动crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它 ... [详细]
  • 在crontab定时执行python脚本,在shell下没有问题,在crontab中报nomodule,找不到安装的库。1crond服务未启动crontab不是Linux内核的功能, ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 【场景】:需要定期运行Hadoop的MapReduce【解决办法】:编写一个运行MapReduce的Shell脚本。然后使用crontab配置定时任务。【Shell脚本】 ... [详细]
  •   crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执 ... [详细]
  • 本文深入探讨了 PHP 实现计划任务的方法,包括其原理、具体实现方式以及在不同操作系统中的应用。通过详细示例和代码片段,帮助开发者理解和掌握如何高效地设置和管理定时任务。 ... [详细]
  • ssh登陆服务器,切换为有权限的用户比如sudosuazhibocrontab-l查看所有现有的命令使用crontab-e编辑定时任务,定时任务比如:04*** ... [详细]
  • 记录一次ali云线上环境jenkins被攻击挖矿的处理过程
    周六告警一个接一个,感觉极不寻常netstat-anpd执行结果如下久违的中毒感觉,查看一下各用户下的crontabcatetcpasswd|cut-f1-d:|xargs-I{} ... [详细]
  • 启动服务#servicecrondstart或者#etcinit.dcrondstart格式:*  *  *  *  *  command分 时 日 月 周  ... [详细]
  • 关于定时执行一个PHP文件办法,该如何解决
    后端开发|php教程crontab,windows,PHP,schedule,7302763后端开发-php教程关于定时执行一个PHP文件的方法简搜源码,ubuntu找不到域名,启 ... [详细]
  • 今天遇到一个问题:一个python脚本命令行运行时很正常,放到crontab中就无法工作,日志也没有记录,找了半天,终于发现问题所在。在脚本最上方,程序如下:#!usr ... [详细]
author-avatar
记忆里的Angle
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有