.Net  
公告
日历
统计
  • 随笔 - 88
  • 文章 - 3
  • 评论 - 11
  • 引用 - 0

导航

 

2008年3月4日

Unix系统是通过进程树来进行进程管理,当计算机系统被启动后,Unix的核心程序装主存,这点与Windows差不了.当核心程序在做完自身的初始化工作后,建立系统的第一个进程.这个进程在UNIX系统中被称为0号进程, 0号进程进程始终运行在系统的核心态,它的功能是完成UNIX系统的进程调度(这里说下,UNIX的进程调度一般都是在trap访管理指令下进行的)和让进程在主存与磁盘上进行交换(这一个过程发生在UNIX系统中的交换区,通常为UNIX的swap磁盘区),因此,在UNIX系统中0号进程与被人们称为交换进程.

注意:在UNIX系统中0号进程并不是初始化进程,而是由0号进程创建的1号进程才是初始化进行,1号进程在用户态运行;每当有终端请求注册时,1号进行就为该用户创建一个login进程.如果有多个终端用户向系统注册,则要为每个用户创建一个login进程,分别处理各个用户的登录过程.若用户注册成功,则login进程就为该用户再创建一个shell进程.

每个shell进程等待用户输入命令.shell进行执行shell解释程序,对接收到的命令进行分析,分析后再创建一个进程去执行该命令.执行命令的进程可按需要再继续创建进程.一条命令执行完后,又返回到shell进程等待下一条命令.

 以下只是说明UNIX从启动到终端用户登录系统并执行UNIX命令这一过程中从UNIX系统的进程观点去分析相关系统进程的过程,总的来说在UNIX中,0号进程和1号进程是进程簇的老祖宗,在系统运行期间就不消亡.

另外,在UNIX系统中用户可通过Shell编程来监控自己在系统中运行的相关进程情况.

posted @ 2008-03-04 21:08 东方新秀 阅读(430) 评论(0) 编辑

2007年9月10日

select to_char(add_months(last_day(sysdate) +1, -1), 'yyyymmdd'),to_char(last_day(sysdate)+1 , 'yyyymmdd') from dual ;

00 22  * *  *   [`echo \`cal\`|awk '{print $NF}'` -eq `date +\%d`] && do-something(每月月底做两个.sh文件,以防其中一个不执行成功时,另个起作用)
假设每月最后一天的8点10分执行your_cmd_fullname,则
[code]for ((i=1;i<=12;i++));do cal $i 2004|sed '/^$\|2004\|^Su.*/d'|sed -e :a -e 'N;s/\n/ /;ta'|sed 's/.* \([0-9][0-9]\)$/\1/';done|awk '{a[$0]=sprintf("%s,%s",a[$0],NR)}END{for(i in a)printf("10 8 %d %s * your_cmd_fullname\n",i,a[i])}' days|sed 's/ ,/ /'[/code]
执行结果
[code]10 8 29 2 * your_cmd_fullname
10 8 30 4,6,9,11 * your_cmd_fullname
10 8 31 1,3,5,7,8,10,12 * your_cmd_fullname[/code]
然后加入此段代码到你的crontab中
Linux---Shell:

#!/bin/bash
today=`date +%d`
last_day=`cal | xargs | awk '{print $NF}'`
if [ "$today" != "$last_day" ]; then
    exit 1
fi
....  # other codes start from here


如何在crontab中表达每月的最后一天,用表达式不行

每天执行,在要执行的程序头做判断,不是月末则退出

posted @ 2007-09-10 21:53 东方新秀 阅读(112) 评论(0) 编辑

2007年9月9日

  • 建立一个文本文件,例如文件名是ftp.txt,其内容如下:
    open *.*.*.* /*用open连接远程服务器192.168.1.100*/
    user MYNAME MYPASSWORD /*MYNAME是用户名,MYPASSWORD是密码*/
    binary /*以二进制传送*/
    hash /*当有数据传送时,显示#号*/
    cd REMOTE_PATHNAME /*进入远程目标路径REMOTE_PATHNAME*/
    get REMOTE_FILE LOCAL_FILE /*把远程文件REMOTE_FILE下载成本地文件LOCAL_FILE*/
    put LOCAL_FILE REMOTE_FILE /*将本地文件LOCAL_FILE上传成远程文件REMOTE_FILE */
    bye /*退出ftp应用*/
  • 执行命令:
    cat ftp.txt | ftp -n
  • posted @ 2007-09-09 21:30 东方新秀 阅读(148) 评论(0) 编辑
     

    切忌要加上参数-v,不然会.......  到linux上测试看看,呵呵

    vi autoftp.sh

    内容如下:

    ftp -n -v -i < ./autoftp.txt


    linux命令(用于设置文件权限)umask

    022

    上述命令显示表示linux系统的umask值为022

    umask -S
    u=rwx,g=rx,o=rx

    umask 177
    umask -S
    u=rw,g=,o=
    上述两行命令把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的状态。

    chmod  u+rwx -R /目录     设定用户对目录的权利 读、写、执行



    创建应答脚本

    vi autoftp.txt

    内容如下:

    open *.*.*.* 21
    user username password
    pwd
    put ftp.txt
    close
    bye
    ftp指令个数如下:

    ftp的命令行格式为:ftp -v -d -i -n -g[主机名]
    -v 显示远程服务器的所有响应信息。
    -d 使用调试方式。
    -n 限制ftp的自动登录,即不使用.netrc文件。
    -g 取消全局文件名。
    posted @ 2007-09-09 21:26 东方新秀 阅读(157) 评论(0) 编辑
     

    切忌要加上参数-v,不然会.......  到linux上测试看看,呵呵

    vi autoftp.sh

    内容如下:

    ftp -n -v -i < ./autoftp.txt


    linux命令(用于设置文件权限)umask

    022

    上述命令显示表示linux系统的umask值为022

    umask -S
    u=rwx,g=rx,o=rx

    umask 177
    umask -S
    u=rw,g=,o=
    上述两行命令把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的状态。

    chmod  u+rwx -R /目录     设定用户对目录的权利 读、写、执行



    创建应答脚本

    vi autoftp.txt

    内容如下:

    open *.*.*.* 21
    user username password
    pwd
    put ftp.txt
    close
    bye
    ftp指令个数如下:

    ftp的命令行格式为:ftp -v -d -i -n -g[主机名]
    -v 显示远程服务器的所有响应信息。
    -d 使用调试方式。
    -n 限制ftp的自动登录,即不使用.netrc文件。
    -g 取消全局文件名。
    posted @ 2007-09-09 21:26 东方新秀 阅读(197) 评论(0) 编辑

    2007年9月5日

    基本上用到的语法如下:
      
    a. 获取单个的建表和建索引的语法
    set heading off;
    set echo off;
    Set pages 999;
    set long 90000;
       
    spool DEPT.sql
    select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;  
    select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;
    spool off;
       
    b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:
      
    set pagesize 0
    set long 90000
      
    set feedback off
      
    set echo off  
    spool scott_schema.sql  
    connect scott/tiger;
    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
          FROM USER_TABLES u;
    SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
          FROM USER_INDEXES u;
    spool off;
       
    c.    获取某个SCHEMA的建全部存储过程的语法
      
    connect brucelau /brucelau;
      
    spool procedures.sql
      
    select
        DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)
    from
        user_objects u
      
    where
        object_type = 'PROCEDURE';
      
    spool off;
       
      
    另:
      
    dbms_metadata.get_ddl('TABLE','TAB1','USER1')  
    三个参数中,第一个指定导出DDL定义的对象类型(此例中为表类型),第二个是对象名(此例中即表名),第三个是对象所在的用户名。.





    要自己写程序了,执行一段SQL,让SQL查询结果就是我们想要的SQL脚本:

    如下:

    select 
             
    'INSERT INTO B_STATTEMPLATE ( N_ID,C_NAME, C_KBH, N_PRINT, N_TYPE, N_APP, N_VALID ) '
             
    || 'Values (' || To_Char(N_ID) ||',''' || C_NAME || '''''' || C_KBH || '''' 
             
    || To_Char( N_PRINT ) || '' || To_Char( N_TYPE ) || '' || '0, 0 );'
     
    from b_stattemplate



    将查询结果保存起来就可以了!

    posted @ 2007-09-05 23:08 东方新秀 阅读(4397) 评论(2) 编辑
     
    一、solaris crontab不执行问题解决
    1.先杀掉/usr/sbin/cron,可以用ps -ef|grep cron 得出id号
    2. rm /etc/cron.d/fifo
    3. /usr/sbin/cron

    二、SUSE crontab不执行问题探讨:

    我基本上认定是crontab运行程序时,它没有读当前用户的.profile,解决方法----

    1.如果有root权限可以这样来修改crontab:
    7 50 * * * su - user -c /channel/app/back/scripts/serv_cust.sh >/channel/app/cron.out

    2.也可以在serv_cust.sh中加上
    . $HOME/.profile
    以获取.profile中定义的各种环境变量
    3.也可能是权限问题.方法:普通用户须被列在/etc/cron.allow中(如果该文件存在),或不被列在/etc/cron.deny中。检查oracle用户是否在上述文件中。

    4.你需要在执行程序前先配置oracle的环境参数,如:$ORACLE_HOME等等;  
      如下,先写一个脚本文件test.sh 

      #!/bin/sh  
      ORACLE_HOME=/home/oracle  
      export  ORACLE_HOME  
      ......  
      /usr/users/oracle/test1  
      然后再写crontab脚本:  
      4   *   *   *   /usr/users/oracle/test.sh  
      就可以了。

    没登录的后台运行程序,没有.profile里的环境变量

    也许是oracle的环境变量。
    posted @ 2007-09-05 22:38 东方新秀 阅读(974) 评论(0) 编辑

    2007年8月26日

    手工创建数据库的全部脚本及说明

    系统环境:

    1、操作系统:Windows 2000 Server,机器内存128M

    2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

    3、安装路径:D:\ORACLE

    建库步骤:

    1、手工创建相关目录

    
    
    D:\Oracle\admin\test 
    D:\Oracle\admin\test\adhoc 
    D:\Oracle\admin\test\bdump 
    D:\Oracle\admin\test\cdump 
    D:\Oracle\admin\test\create 
    D:\Oracle\admin\test\exp 
    D:\Oracle\admin\test\pfile 
    D:\Oracle\admin\test\udump 
    
    D:\Oracle\oradata\test 
    D:\Oracle\oradata\test\archive 
    


    2、手工创建初始化启动参数文件:D:\Oracle\admin\test\pfile\inittest.ora,内容:

    
    db_name = "test" 
    instance_name = test 
    service_names = test 
    db_files = 1024 
    control_files = ("D:\Oracle\oradata\test\control01.ctl", 
    "D:\Oracle\oradata\test\control02.ctl", "D:\Oracle\oradata\test\control03.ctl") 
    open_cursors = 200 
    max_enabled_roles = 30 
    db_file_multiblock_read_count = 8 
    db_block_buffers = 4096 
    shared_pool_size = 52428800 
    large_pool_size = 78643200 
    java_pool_size = 20971520 
    log_checkpoint_interval = 10000 
    log_checkpoint_timeout = 1800 
    processes = 115 
    parallel_max_servers = 5 
    log_buffer = 32768 
    max_dump_file_size = 10240 
    global_names = true 
    oracle_trace_collection_name = "" 
    background_dump_dest = D:\Oracle\admin\test\bdump 
    user_dump_dest = D:\Oracle\admin\test\udump 
    db_block_size = 16384 
    remote_login_passwordfile = exclusive 
    os_authent_prefix = "" 
    job_queue_processes = 4 
    job_queue_interval = 60 
    open_links = 4 
    distributed_transactions = 10 
    mts_dispatchers = "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)" 
    mts_dispatchers = "(protocol=TCP)" 
    compatible = 8.1.0 
    sort_area_size = 65536 
    sort_area_retained_size = 65536 
    
    # log_archive_start = true 
    # log_archive_dest_1 = "location=D:\Oracle\oradata\oradb\archive" 
    # log_archive_format = %%ORACLE_SID%%T%TS%S.ARC 
    


    3、手工创建D:\Oracle\Ora81\DATABASE\inittest.ora文件,

    内容:IFILE=’D:\Oracle\admin\test\pfile\inittest.ora’

    4、使用orapwd.exe命令,创建D:\Oracle\Ora81\DATABASE\PWDtest.ora

    命令:D:\Oracle\Ora81\bin\orapwd file=D:\Oracle\Ora81\DATABASE\PWDtest.ora password=ORACLE entries=5

    5、通过oradim.exe命令,在服务里生成一个新的实例管理服务,启动方式为手工

    set ORACLE_SID=test

    D:\Oracle\Ora81\bin\oradim -new -sid test -startmode manual -pfile "D:\Oracle\admin\test\pfile\inittest.ora"

    6、生成各种数据库对象

    D:\ >svrmgrl

    --创建数据库

    
    connect INTERNAL/oracle 
    startup nomount pfile="D:\Oracle\admin\test\pfile\inittest.ora" 
    CREATE DATABASE test 
    LOGFILE ’D:\Oracle\oradata\test\redo01.log’ SIZE 2048K, 
    ’D:\Oracle\oradata\test\redo02.log’ SIZE 2048K, 
    ’D:\Oracle\oradata\test\redo03.log’ SIZE 2048K 
    MAXLOGFILES 32 
    MAXLOGMEMBERS 2 
    MAXLOGHISTORY 1 
    DATAFILE ’D:\Oracle\oradata\test\system01.dbf’ 
    SIZE 58M REUSE AUTOEXTEND ON NEXT 640K 
    MAXDATAFILES 254 
    MAXINSTANCES 1 
    CHARACTER SET ZHS16GBK 
    NATIONAL CHARACTER SET ZHS16GBK; 


    控制文件、日志文件在上面语句执行时生成

    connect INTERNAL/oracle

    --修改系统表空间

    ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 50);

    ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;

    --创建回滚表空间

    
    CREATE TABLESPACE RBS DATAFILE ’D:\Oracle\oradata\test\rbs01.dbf’ SIZE 256M REUSE 
    AUTOEXTEND ON NEXT 5120K 
    MINIMUM EXTENT 512K 
    DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096); 


    --创建用户表空间

    
    CREATE TABLESPACE USERS DATAFILE ’D:\Oracle\oradata\test\users01.dbf’ SIZE 128M REUSE 
    AUTOEXTEND ON NEXT 1280K 
    MINIMUM EXTENT 128K 
    DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0); 


    --创建临时表空间

    
    CREATE TABLESPACE TEMP DATAFILE ’D:\Oracle\oradata\test\temp01.dbf’ SIZE 32M REUSE 
    AUTOEXTEND ON NEXT 640K 
    MINIMUM EXTENT 64K 
    DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS 
    UNLIMITED PCTINCREASE 0) TEMPORARY; 


    --创建工具表空间

    
    CREATE TABLESPACE TOOLS DATAFILE ’D:\Oracle\oradata\test\tools01.dbf’ SIZE 64M REUSE 
    AUTOEXTEND ON NEXT 320K 
    MINIMUM EXTENT 32K 
    DEFAULT STORAGE ( INITIAL 32K NEXT 32K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0); 


    --创建索引表空间

    
    CREATE TABLESPACE INDX DATAFILE ’D:\Oracle\oradata\test\indx01.dbf’ SIZE 32M REUSE 
    AUTOEXTEND ON NEXT 1280K 
    MINIMUM EXTENT 128K 
    DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0); 


    --创建回滚段

    
    CREATE PUBLIC ROLLBACK SEGMENT RBS0 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS1 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS2 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS3 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS4 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS5 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS6 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS7 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS8 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS9 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS10 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS11 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS12 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS13 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS14 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS15 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS16 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS17 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS18 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS19 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS20 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS21 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS22 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS23 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 
    CREATE PUBLIC ROLLBACK SEGMENT RBS24 TABLESPACE RBS STORAGE ( OPTIMAL 4096K ); 


    --使回滚段在线

    
    ALTER ROLLBACK SEGMENT "RBS0" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS1" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS2" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS3" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS4" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS5" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS6" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS7" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS8" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS9" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS10" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS11" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS12" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS13" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS14" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS15" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS16" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS17" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS18" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS19" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS20" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS21" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS22" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS23" ONLINE; 
    ALTER ROLLBACK SEGMENT "RBS24" ONLINE; 


    --修改sys用户的临时表空间为TEMP

    alter user sys temporary tablespace TEMP;

    --创建数据字典表

    
    @D:\Oracle\Ora81\Rdbms\admin\catalog.sql; 
    @D:\Oracle\Ora81\Rdbms\admin\catexp7.sql 
    @D:\Oracle\Ora81\Rdbms\admin\catproc.sql 
    @D:\Oracle\Ora81\Rdbms\admin\caths.sql 
    
    connect system/manager 
    @D:\Oracle\Ora81\sqlplus\admin\pupbld.sql 
    
    connect internal/oracle 
    @D:\Oracle\Ora81\Rdbms\admin\catrep.sql 
    exit 
    


    --生成SQL*Plus帮助系统

    sqlplus SYSTEM/manager

    @D:\Oracle\Ora81\sqlplus\admin\help\helpbld.sql helpus.sql

    exit

    --修改system用户默认表空间和临时表空间

    svrmgrl

    connect internal/oracle

    alter user system default tablespace TOOLS;

    alter user system temporary tablespace TEMP;

    exit

    7、将test实例启动服务设置成自动启动方式

    D:\Oracle\Ora81\bin\oradim -edit -sid test -startmode auto

    (完)

    posted @ 2007-08-26 23:22 东方新秀 阅读(1231) 评论(0) 编辑

    2007年8月24日

    摘要: 对Oracle数据库的定时热备份(Exp)通常可用两种办法实现,一种是在Oracle数据库中利用其提供的任务队列管理器(Job Queue)来实现;另一种是利用操作系统的定时执行命令来完成。在第一种方法中需要数据库启动后台进程SNP,并且需在Oracle的初始化文件中加入任务队列的启动参数,而第二种方法不需对数据库做任何改动即可完成。本例介绍如何利用Digital Unix 4.0F下的定时触发器...阅读全文
    posted @ 2007-08-24 22:14 东方新秀 阅读(263) 评论(0) 编辑

    2007年8月20日

    摘要: http://www.teajk.com/wss/vb6.asp阅读全文
    posted @ 2007-08-20 23:11 东方新秀 阅读(52) 评论(0) 编辑
     
    Copyright © 东方新秀 Powered by: 博客园 模板提供:沪江博客