linux – 来自cronjob的“stdin:不是tty”
每次执行特定的cronjob时,我都会收到以下邮件.当我直接调用它时,调用的脚本运行正常,甚至来自cron.所以我得到的消息不是一个实际的错误,因为脚本完全按照它应该做的去做. 这是cron.d条目:
和get.sh脚本本身:
当我没有使用bash -l语法时,脚本会在wget过程中挂起.所以我的猜测是它与wget有关并将输出放到stdout.但我不知道如何解决它. 最佳答案
你实际上有两个问题.
>为什么打印stdin:不是tty? 此警告消息由bash -l打印. -l( – login)选项要求bash启动登录shell,例如:通常在您输入密码时启动的那个.在这种情况下,bash期望它的stdin是一个真正的终端(例如,isatty(0)调用应该返回1),如果它由cron运行则不是真的 – 因此这个警告. 重现此警告的另一种简单方法是非常常见的,即通过ssh运行此命令:
这是因为当使用命令作为参数调用时,ssh不会分配终端(在这种情况下,应该使用-t选项来强制终端分配). >为什么没有-l它不起作用? 正如@Cyrus在评论中正确陈述的那样,在启动时加载bash的文件列表取决于会话的类型.例如.对于登录shell,它将加载/ etc / profile,?/ .bash_profile,?/ .bash_login和?/ .profile(参见手动bash(1)中的INVOCATION),而对于非登录shell,它只会加载?/. bashrc中.您似乎只在为登录shell加载的一个文件中定义了您的http_proxy变量,但在?/ .bashrc中没有.你将它移动到?/ .wgetrc它是正确的,但你也可以在?/ .bashrc中定义它,它会工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 如何在同一个shell命令中打开sftp连接并执行sftp命
- WINDOW+TortoiseSVN+LINUX CENTOS 6+SVN服务器端安装
- linux – 如何获取与其关联的IP地址的NIC卡的逻辑名称?
- linux – / proc / pid / loginuid中的一些uid很奇怪
- linux – 如何判断irqbalance是否正在执行任何操作?
- LINUX教学:性能测试之OVN vs (ML2+OVS)
- linux – `less`命令显示输出所用的时间
- 如何在Linux服务器中安排R Script Cronjob?
- Linux桌面环境
- linux – 用于正则表达式替换的Bash命令