0 0

Linux 自动调度问题10

crontab -l 如下:
00 23 * * * /home/pmi/shell/I_SHL_SHE_BASE.sh>/home/pmi/log/cron_base.log 2 >&1
50 23 * * * /home/pmi/shell/I_SHL_SHE_MID.sh>/home/pmi/log/cron_mid.log 2 >&1

配置文件env.cfg:

pmi_dbuser=pmi78_user_test
pmi_dbpwd=pmi78_user_test
pmi_dbname=pmi
pmi_bworkdate=20100108
pmi_mworkdate=20100108
pmi_bstatus=0
pmi_mstatus=0
pmi_logpath=/home/pmi/log


如下是I_SHL_SHE_BASE.sh中开始的一段脚本

###########################步骤1:初始化env.cfg文件及Job##############################

step1=`sh $shellpath/I_SHL_INIT.sh>step1.log`
st1=`grep 'flag' step1.log |awk -F"=" '{print $2}'`
if [ "$st1" -eq "0" ]
then
    echo "初始化env.cfg文件成功!"
    rm step1.log
else
    echo "初始化env.cfg文件失败!"
    rm step1.log
    exit -1;
fi

如下是I_SHL_INIT.sh:
#!/bin/bash
#********************************************************************************
#       Function:I_SHL_INIT.sh
#       Inputs:
#       Author:  XX
#       Date:    2009-12-20
#       History:
#********************************************************************************
shellpath=/home/pmi/shell

logpath=`grep 'pmi_logpath' $shellpath/env.cfg |awk -F"=" '{print $2}'`
dbuser=`grep 'pmi_dbuser' $shellpath/env.cfg |awk -F"=" '{print $2}'`
dbpwd=`grep 'pmi_dbpwd'  $shellpath/env.cfg |awk -F"=" '{print $2}'`
dbname=`grep 'pmi_dbname' $shellpath/env.cfg |awk -F"=" '{print $2}'`
logname="$logpath/init.log"

sqlplus -S ${dbuser}/${dbpwd}@${dbname} <<!>$logname
    select pmi_key||'='||pmi_value from pmi_bb_dd_ddcsb;
    show sqlcode;
    quit;
!

#结果处理

sqlcode=`grep 'sqlcode' $logname |awk -F" " '{print $2}'`
if [ -f "$logname"  -a  $sqlcode -eq "0" ]  
then
    pmi_dbuser=`grep 'dbuser' $logname |awk -F"=" '{print $2}'`
    pmi_dbpwd=`grep 'dbpwd' $logname |awk -F"=" '{print $2}'`
    pmi_dbname=`grep 'dbname' $logname |awk -F"=" '{print $2}'`
    pmi_bworkdate=`grep 'bworkdate' $logname |awk -F"=" '{print $2}'`
    pmi_mworkdate=`grep 'mworkdate' $logname |awk -F"=" '{print $2}'`
    pmi_bstatus=`grep 'bstatus' $logname |awk -F"=" '{print $2}'`
    pmi_mstatus=`grep 'mstatus' $logname |awk -F"=" '{print $2}'`
    pmi_logpath=`grep 'logpath' $logname |awk -F"=" '{print $2}'`
    rm $shellpath/env.cfg
    echo "pmi_dbuser=$pmi_dbuser">$shellpath/env.cfg
    echo "pmi_dbpwd=$pmi_dbpwd">>$shellpath/env.cfg
    echo "pmi_dbname=$pmi_dbname">>$shellpath/env.cfg
    echo "pmi_bworkdate=$pmi_bworkdate">>$shellpath/env.cfg
    echo "pmi_mworkdate=$pmi_mworkdate">>$shellpath/env.cfg
    echo "pmi_bstatus=$pmi_bstatus">>$shellpath/env.cfg  
    echo "pmi_mstatus=$pmi_mstatus">>$shellpath/env.cfg
    echo "pmi_logpath=$pmi_logpath">>$shellpath/env.cfg
    rm $logname
    echo "flag=0"
    exit 0;
else
#  rm $logname;
    echo "flag=-1"
    exit -1;
fi
问题是每次自动调度我都在日志文件中看到:初始化env.cfg文件失败。  仔细检查了一下文件中的数据库、用户名、密码、日志路径都没错。困扰了很久一直找不到原因!

问题补充
需要补充一下的    我用SSH远程连接服务器之后  手工执行调度  没问题   自动调度就初始化env.cfg文件失败了  修改了文件权限还是一样的错  cron 服务是root用户起的。手工执行是pmi用户执行的。

问题补充:<div class="quote_title">wangqj 写道</div><div class="quote_div">首先看看直接执行脚本会不会有问题,然后再考虑crontab的问题,估计脚本问题居多</div> <br /> <br /> <br />直接执行没问题&nbsp;&nbsp; <br />
2010年5月14日 11:43

1个答案 按时间排序 按投票排序

0 0

首先看看直接执行脚本会不会有问题,然后再考虑crontab的问题,估计脚本问题居多

2010年5月14日 15:02

相关推荐

    Linux进程调度完整版

    Linux进程调度是操作系统核心部分,负责管理系统的CPU执行时间,确保所有进程都能公平地获取资源。在Linux 2.6.23内核版本中,引入了Completely Fair Scheduler(CFS)作为主要的调度器,取代了原有的调度策略。在...

    Linux 2.6任务调度器及其重要属性

    Linux 2.6调度器引入了SMP负载均衡,自动在多个CPU之间迁移任务,以避免某个CPU过载而其他CPU空闲的情况。这显著提升了多处理器系统的整体效率,使得所有CPU资源都能被充分利用。 5. **任务抢占**: 预占机制允许...

    基于Linux的实时调度机制的研究

    文章首先分析了当前Linux内核调度机制存在的问题,随后介绍了实时Linux的基本思想及其设计原理,最后详细阐述了如何实现面向应用的调度框架以及提高内核抢占性的方法。 #### Linux的进程调度机制简要分析 Linux...

    Linux内核调度原理(英文)

    3. 实时系统:Linux内核调度原理广泛应用于实时系统中,例如控制系统、导航系统和自动化系统等。 Linux内核调度原理是Linux操作系统中最核心的组件之一,它能够高效地分配系统资源,确保系统的高效运行和公平性。

    Linux的调度命令1

    ### Linux的调度命令详解:at命令 #### 一、引言 在Linux系统管理中,自动化任务处理是一项非常重要的技能。其中一个常用的工具是`at`命令,它允许用户在特定的时间点执行预定的命令或者脚本。这不仅提高了效率,还...

    Linux调度命令2

    ### Linux Cron调度命令详解 #### 一、Cron简介 Cron是Linux系统中的一个非常重要的后台服务,它主要用于管理周期性的重复任务。通过cron,我们可以轻松地安排各种任务自动执行,比如定时备份数据、定时清理日志...

    linux自动删除文件

    "Linux自动删除文件"这个主题涉及到使用Shell脚本来定期或按照特定条件清理无用的文件,以保持系统的整洁和高效运行。下面我们将深入探讨如何创建和使用Shell脚本来实现这一功能。 首先,让我们了解什么是Shell脚本...

    基于Linux系统中进程调度分析.pdf

    被动调度则是由于中断处理、系统调用返回、新进程产生、优先级改变、资源可用唤醒进程或时间片耗尽等情况,自动触发调度。 【调度策略】Linux针对不同类型的进程采用了不同的调度策略。例如,它结合了优先级调度,...

    Linux实时调度算法研究.pdf

    本文将从问题模式出发,探讨Linux实时调度算法的研究和分类,旨在为实际应用提供更具针对性的指导。 首先,我们要理解实时调度算法的重要性。在实时系统中,任务的完成时间至关重要,超过了预设的时间限制可能导致...

    嵌入式Linux实时调度算法及应用.pdf

    1. 嵌入式 Linux 实时调度算法的设计目标是解决 Linux 2.6 内核在嵌入式应用中的实时性不足问题。 2. 该算法引入了截止期、带宽等属性,以提高实时进程的调度性能。 3. 该算法设计了实时进程插入、时钟中断、实时...

    Linux中任务调度的配置与学习

    在Linux操作系统中,任务调度是自动化执行特定任务的关键特性,主要通过`cron`守护进程实现。`cron`是一个后台服务,负责定期执行预定的任务,这些任务通常被称为计划任务或者定时任务。本文将深入探讨`cron`进程...

    嵌入式Linux任务调度算法实时性优化.pdf

    综上所述,文章深入研究了嵌入式实时操作系统中的任务调度优化问题,对RM和EDF两种重要算法进行了分析,并尝试找到更适合嵌入式Linux的实时调度解决方案。这对于提高嵌入式系统的性能和响应速度具有重要意义,尤其...

    linux下 多线程模拟进程调度多线程模拟进程调度

    在Linux操作系统中,多线程模拟进程调度是一个深入理解操作系统内核和并发编程的重要主题。进程调度是操作系统核心的关键组成部分,负责决定哪个进程应该获得CPU的执行权,以及何时进行切换。而通过多线程模拟进程...

    在Linux系统中IO调度的选择

    ### 在Linux系统中IO调度的选择 #### I/O调度概述 在Linux系统中,I/O调度算法扮演着极其重要的角色,特别是在多个进程同时竞争磁盘I/O资源时。它负责优化请求的顺序和时机,以达到最佳的整体I/O性能。本文将详细...

    一种面向多核系统的Linux任务调度算法.pdf

    综上所述,GFС算法是一种针对多核系统优化的Linux任务调度算法,它通过自动配置和负载均衡策略,解决了传统调度算法在多核环境中的交互性能问题。其设计思路和实现方法对于系统开发人员和研究人员来说具有重要的...

    linux与UNIX调度算法比较分析.docx

    非抢占式进程调度时机分为两种情况:进程自动放弃CPU和进程由核心态转入用户态。 二、Linux进程调度原理 Linux进程调度原理中,调度程序在选择进程时,会根据四个因素:policy、priority、counter、rt_priority来...

    linux进程调度与进程切换1

    在这些情况下,调度由系统自动执行,不依赖于进程的行为。`schedule()`, `do_timer()`和`ret_from_sys_call()`三个函数共同参与了这一过程。`schedule()`负责选择新进程,`do_timer()`更新系统时间,`ret_from_sys_...

    嵌入式Linux实时调度算法的优化设计.pdf

    【嵌入式Linux实时调度算法的优化设计】 嵌入式Linux在近年来的计算机时代中扮演着重要的角色,尤其是在2006年的技术发展中,Linux 2.6内核的发布为嵌入式系统和实时系统带来了显著的进步。Linux 2.6内核引入了抢占...

Global site tag (gtag.js) - Google Analytics