首页 » 信息技术 »

尝试在cron中执行脚本遇到的问题

2019年6月5日 / 8次阅读
Linux

  • 打开支付宝,搜索“ 529018372 ”,领取专属红包!每日支付每日领。

记录一下我尝试在cron中执行脚本遇到的问题和解决方法:

1,

/bin/sh: 1: /home/xinlin/maixj.net/tools/renew_acc.sh: Permission denied

检查你的脚本文件renew_acc.sh,是否有可执行权限。

使用chmod增加脚本的可执行权限。

2,

/bin/sh: 1: /home/xinlin/maixj.net/tools/renew_acc.sh: not found

renew_acc.sh的#!(shebang)写的是/usr/bin/bash,

修改为#!/bin/bash就OK,

我是用的Ubuntu系统,它与CentOS稍有不同,在/usr/bin/目录下面,你找不到sh和bash。

3,不要在cron中执行有sudo的脚本

有sudo,意味着系统会让你输入密码,这样实际上就中断了脚本的自动执行。

不安全的方法是直接将密码写入脚本:

$echo 'your password' | sudo -S xxxx.sh

比较安全的方式是:

$sudo visudo

修改/etc/sudoers文件

找到username所在的sudo组,然后在组配置的后面,增加一行:

username ALL=(ALL:ALL) NOPASWD: /path/to/script.sh

用这个方式,此脚本如果不在cron中执行,也可以不需要输入密码。

但是,如果脚本要在cron中执行,仅仅增加这一行还不够,出现:sudo: no tty present and no askpass program specified 的错误提示。

在网上查了很多资料,也没有找到解决问题的办法,Ubuntu的sudoers文件里面,压根就没有Default requiretty这一行。

在一些英文页面看到这样的说法:

有sudo的脚本,直接给在root的cron中执行即可。对呀,为什么不呢?!

使用sudo crontab -e编辑root的cron任务。

4,

脚本中的重定向到文件,默认的位置是用户的home。

 

一点经验:在脚本中,请都使用绝对路径!

 

 

本文链接:https://www.maixj.net/ict/cron-sh-21597

相关文章

留言区


前一篇:
后一篇:
推一篇:可靠正规,长期稳定,网络兼职项目!!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top