由于最近需要用到宝塔的计划任务来实现网站的自动备份,但是添加任务后发现并没有如期执行.
搜索了一番后在官方论坛发现了这篇帖子https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=15674&highlight=CentOS
因安全问题博主也修改了root用户名,问题情况与帖子描述一致,但把用户名改回root显然不现实
郁闷的是帖子后续并没有给出其他的解决办法,所以只能自行研究了
经过分析与测试后发现可以通过修改宝塔的python脚本来解决,下面给出解决办法
宝塔面板的计划任务类脚本位于/www/server/panel/class/crontab.py,编辑它
第9行的import,我们需要引入一个新的模块pwd,修改如下
import public,db,os,web,time,re,pwd
接着搜索”def DelCrontab“,找到下列代码
x = web.ctx.session.server_os['x'];
if x == 'RHEL':
file='/var/spool/cron/root'
else:
file='/var/spool/cron/crontabs/root'
修改为
x = web.ctx.session.server_os['x'];
root_name = pwd.getpwuid(os.getuid())[0]
if x == 'RHEL':
file='/var/spool/cron/' + root_name else: file='/var/spool/cron/crontabs/' + root_name
继续搜索”def WriteShell“,找到如下代码
def WriteShell(self,config):
x = web.ctx.session.server_os['x'];
if x == 'RHEL':
file='/var/spool/cron/root'
else:
file='/var/spool/cron/crontabs/root'
if not os.path.exists(file): public.writeFile(file,'')
conf = public.readFile(file)
conf += config + "n"
if public.writeFile(file,conf):
if x == 'RHEL':
public.ExecShell("chmod 600 '" + file + "' && chown root.root " + file)
else:
public.ExecShell("chmod 600 '" + file + "' && chown root.crontab " + file)
return True
return public.returnMsg(False,'FILE_WRITE_ERR')
改为
def WriteShell(self,config):
x = web.ctx.session.server_os['x'];
root_name = pwd.getpwuid(os.getuid())[0]
if x == 'RHEL':
file='/var/spool/cron/' + root_name
else:
file='/var/spool/cron/crontabs/' + root_name
if not os.path.exists(file): public.writeFile(file,'')
conf = public.readFile(file)
conf += config + "n"
if public.writeFile(file,conf):
if x == 'RHEL':
public.ExecShell("chmod 600 '" + file + "' && chown " + root_name + "." + root_name + " " + file)
else:
public.ExecShell("chmod 600 '" + file + "' && chown " + root_name + ".crontab " + file)
return True
return public.returnMsg(False,'FILE_WRITE_ERR')
保存所作修改.(编辑时注意缩进! )
执行”/etc/init.d/bt restart“重启宝塔面板.
大功告成!
需要强调的是:如果在修改前添加过计划任务,你可能需要删除后重新添加或者手动修改相关的cron文件
夜河资源网提供的所有内容仅供学习与交流。通过使用本站内容随之而来的风险以及法律责任与本站无关,所承担的法律责任由使用者承担。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!