热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

crontab启动进程错误:standardinmushbeatty

我在crontab写的内容是:#DONOTEDITTHISFILE-editthemasterandreinstall.#(tmpcrontab.3516insta
我在crontab写的内容是:

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.3516 installed on Mon Mar 21 10:32:11 2005)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
SHELL=/bin/bash
HOME=/home/oracle
PATH=/usr/kerberos/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin/bin:/sbin:/usr/X11R6/bin:/home/oracle/OraHome1/bin
LOGNAME=oracle
LD_ASSUME_KERNEL=2.4.1
ORACLE_BASE=/home/oracle/OraHome1/
ORACLE_HOME=/home/oracle/OraHome1/
ORACLE_TERM=xterm
*/5 * * * * su - oracle -c '/home/oracle/process_up'

错误是:standard in mush be a tty

假如我直接使用*/5 * * * * /home/oracle/process_up
因为我使用pro*c连接数据库,数据库会连接不上,请帮忙

10 个解决方案

#1


standard in must be a tty
意思应该是说stdin(标准输入设备)必须是一个tty(虚拟终端,就是人机交互的接口)

su - oracle ....  #你这里使用了标准输入 '-'  但因为crond守护启动的进程或shell并没有tty,所以报这个错。

你加好
SHELL=/bin/bash
HOME=/home/oracle
LOGNAME=oracle
就行了
其它变量应该会从oracle用户目录下的.bash_profile读取不用,这里设置,这里设.bash_profile里没有的变量较好。
 
然后试着直接用*/5 * * * * /home/oracle/process_up &> myerror.log试试,看看这种情况下出什么错,

另外连不上数据库,不一定是crontab造成的,看看其他原因

#2


ORACLE_TERM=xterm这一句去掉试试

#3


up

#4


还是没有搞好,大家帮我看看:
我的crontab内容:
*/5 * * * * /home/oracle/process_up

我的脚本process_up内容:
SHELL=/bin/bash
HOME=/home/oracle
#PATH=/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin/bin:/sbin:/usr/X11R6/bin:/home/oracle/OraHome1/bin
LOGNAME=oracle
#LD_ASSUME_KERNEL=2.4.1
#ORACLE_BASE=/home/oracle/OraHome1
#ORACLE_HOME=/home/oracle/OraHome1
#ORACLE_TERM=xterm
STR=`ps -A | grep atm_comm`
LEN=${#STR}
SUB=${STR:LEN - 8:8}
if [ "$SUB" != "atm_comm" ]; then
/home/oracle/wangds/source/atm_comm /home/oracle/wangds/source/atm_comm_config.cfg
else
echo "atm_comm find"
fi 

STR=`ps -A | grep atm_smi_deal`
LEN=${#STR}
SUB=${STR:LEN - 12:12}
if [ "$SUB" != "atm_smi_deal" ]; then
/home/oracle/wangds/smi_deal/atm_smi_deal /home/oracle/wangds/smi_deal/atm_comm_config.cfg
else
echo "atm_smi_deal find"
fi

进程启动后连接数据库错误
错误提示:
错误号:   -12154
错误内容: Error while trying to retrieve text for error ORA-12154

#5


这个错误是:
ORA-12154: TNS: 无法处理服务名

可能你没启动TNS,或服务名没配好

#6


这个错误是:
ORA-12154: TNS: 无法处理服务名

可能你没启动TNS,或服务名没配好
------------------------------
不是这个

我查到另一个问题,直接使用root用户执行脚本也连接不了数据库,只有oracle用户可以的

#7


顶一下,升星了,不抢分了,今天没时间仔细看了……

#8


你用root直接执行
su - oracle -c '/home/oracle/process_up'
正常吗?
你的脚本写的太复杂啦
仔细看会累死人的

#9


我测试了一下,
ORACLE_HOME必须被设到crontab里,不会从当前用户的bash环境读取,这里我更正一下我前面所说的,脚本如下:
# 这个脚本是指/etc/crontab
SHELL=/bin/bash
LOGNAME=oracle
HOME=/home/oracle
#输出写到/var/spool/mail/oracle文件
MAILTO=oracle
ORACLE_HOME=/home/oracle/OraHome1

#注意这里必须要有用户名oracle
*/5 * * * * oracle /home/oracle/process_up

另外你在pro C里的连接是用
exec sql connect ... using : 吗?
如果是必须要保证当前的shell里
$ORACLE_HOME/network/admin下面必须存在正确的tnsname.ora,其中包含正确的tns服务名和连接串


你也可以用(root用户执行)
#crontab -u oracle -e
来只为oracle用户添加crontab,位于/var/spool/cron 下名为oracle的文件。这条命令自动打开vi,并将其保存到/var/spool/cron下名为oracle的文件,可以立刻生效
该文件的格式和系统范围的/etc/crontab基本一样,只有一点:用户的crontab文件(/var/spool/cron)执行的命令行,时间后面的域不能有用户名,如:
*/5 * * * * /home/oracle/process_up
而/etc/crontab必须要有用户名

#10


Ropyn(剑心) 
谢谢,你的答案是正确的,不是时间错误了,我前些天搞好了,和你说的一样的,感谢你,我想你帮我太多了,我应该揭贴了

推荐阅读
  • 前言crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较 ... [详细]
  • 想到一个问题,如果在crontab里有个定时任务设置为一分钟执行一次,但是它执行的时间可能会超过一分钟,此时crontab一分钟后会再次运行该脚本吗?这样会不会出现冲突呢?网上找了下,说可以用Linu ... [详细]
  • 服务器上的nginx使用logrotate来分割日志,设置为每天分割。但是logrotate似乎没有工作,日志并没有分割。服务器是CentOS6。为了找到原因 ... [详细]
  •   crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文详细介绍了如何规划和部署一个高可用的Etcd集群,包括主机配置、软件安装、防火墙设置及集群健康检查等内容。通过合理的硬件配置和网络规划,确保Etcd集群在生产环境中的稳定运行。 ... [详细]
  • 本文将详细介绍如何利用PHP进行实时监控及信息查看,包括PHP版本信息、Linux服务器状态以及客户端请求记录等。 ... [详细]
  • #!binbash########################################################################## File Name : rsync_nobody.sh#  ... [详细]
  • 用.sh文件来完成任务,但现在有个项目直接用url就行。一般系统不会有crontabShell#安装crontab:yuminstallcronta ... [详细]
  • 【场景】:需要定期运行Hadoop的MapReduce【解决办法】:编写一个运行MapReduce的Shell脚本。然后使用crontab配置定时任务。【Shell脚本】 ... [详细]
  • Linux下怎么使用crontab命令
    本篇内容主要讲解“Linux下怎么使用crontab命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Li ... [详细]
  • 第一种,通过mancrontab查看crontab的帮助手册第二种列出几个简单示例Crontab命令的格式为:crontab–l|-r|-e|-i[username]-l显示用户的 ... [详细]
  • 记录一次ali云线上环境jenkins被攻击挖矿的处理过程
    周六告警一个接一个,感觉极不寻常netstat-anpd执行结果如下久违的中毒感觉,查看一下各用户下的crontabcatetcpasswd|cut-f1-d:|xargs-I{} ... [详细]
  • 1crond服务未启动crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它 ... [详细]
  • 一,crontab服务的简介二、安装cron服务安装cron服务:--yuminstallvixie-cron--yuminstallc ... [详细]
author-avatar
假装坚持-我很不爽_547
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有