linux脚本在定时任务中执行异常

linux服务器上weblogic用户写的脚本(就简单的将一个输出写入到一个已经存在文件中)命令行可以执行,放到定时任务里不会执行,查看cron.log确实已经执行了,但就是打不到预期效果,已经在脚本开头加过. /etc/profile . ~/.bash_profile还是不管用。

  1. 检测在其它位置是否能执行
  2. 检测执行涉及的所有路径是否有效
  3. 检测文件是否有执行权限
    可以从日志中找一下执行问题的信息。

如果脚本手动执行成功,而定时执行不成功,一般是因为调用的命令或文件未使用绝对路径导致,方便的话把你的脚本贴出来帮你看一下

用root用户试一下是否可以执行定时任务,如果root可以那就是普通用户的问题。可以试一试将普通权限用户的最大线程数改大一点!

检查路径、环境变量,必要时可以分成几步来执行,看哪一步出问题了

1、weblogic用户写的脚本,你手动执行的时候用的是什么用户?root还是weblogic?
2、你添加定时任务是怎么加的
3、/etc/crontab文件中是可以添加执行用户的,用户名用你可以成功执行的用户试试

权限不够

看一下定时命令

可以参考我这种写法。


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 指定时间执行数据跑批文件,每天凌晨3点执行任务
0 3 * * * /bin/sh /root/file/commond/data_start.sh >> /root/commond_crontab/crontab.log 2>&1
# 每一个小时执行一次任务
0 */4 * * * /bin/sh /root/file/commond/sftp_upload_file.sh

启动定时任务

/sbin/service crond start

重启定时任务

/sbin/service crond restart

停止定时任务

/sbin/service crond stop

一般profile 用来初始化环境变量的,这个阶段很多系统工具都还不能用。因为path变量都可能还未设置好,你执行的命令都可能找不到位置。

建议改下方式。
ubuntu:Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本。
chmod +x /etc/rc.local
其他系统可以自己查询下,方式都不一样的