前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux系统用户下的crontab任务不执行问题处理

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

作者头像
李海彬
发布2018-03-20 16:58:45
1.8K0
发布2018-03-20 16:58:45
举报
文章被收录于专栏:Golang语言社区

需要每一天对数据库做一个备份,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_pro

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档