关于crontab

 在linux中定期执行系统重启,镜像制作,测试,使用crontab是最常见的方法。最近用python制作了一个嵌入式镜像自动生成工具。主要的功能就是取出当前最新的git代码,编译,拷贝,并使用genext2fs制作成烧录镜像。这样就不用每次发布新版本的时候人工繁琐的制作烧录镜像。代码随后会发布到github上。

关于git大家知道的常用方法就是使用rsa密钥来进行权限管理。当然就涉及到脚本执行的用户。在网络上查找相关的信息之后发现在当前用户下使用crontab -e可以添加以当前用户为用户执行的批处理。

由于涉及到多个项目,原本制作一个了定时操作能过一个星期正常工作。但是添加了新的定时操作之后就出现代码的源文件以及git操作变成以root权限操作的结果。这样就引起了一些文件操作的冲突。

经过两天的调试仍然找不到任何头绪。发现自己重复的执行脚本没问题。将脚本添加到crontab中也没问题。当多修改几次crontab执行脚本的时间并重启cron测试就又可能出现文件权限变成root的问题。经过观察发现root权限文件的修改时间和脚本的执行文件时间有出入。

再到网络上搜索,无意中看到了一个/var/spool/cron/可以查看log信息的网页。然后就怀着好奇心进入这个目录查看。发现该目录下有两个文件。一个是当前用户的命名一个是root命名。打开root发现里面竟然写着语句每个小时59份的时候执行自动制作镜像的操作!!!凶手终于浮出水面。怪不得测试的时候反复执行也找不到规律。是因为PC自动59分的时候就会执行一次来捣乱。将该文件删除。工具恢复正常工作。

最费解的是查看/etc/crontab中并没有这个内容。经过推断应该是不小心以root用户添加过一次.可能是在学习使用crontab的时候用到了./var/spool/cron/下的root正是要求系统以root用户来运行这个脚本。和/etc/crontab半毛钱关系都没有。

 

自此自动制作镜像又恢复正常。相当于每个星期节省了1天的工时。并且不会在时间紧迫的时候手忙脚乱的制作镜像。优雅的一键生成镜像。符合joel的要求。

工具会放到github上欢迎大家拍砖。

你可能感兴趣的:(python,测试,嵌入式,源文件,root权限,自动制作)