??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区二区三区在线播放,亚洲最大视频网站,亚洲免费在线观看http://m.tkk7.com/loocky/archive/2007/11/22/162301.html小E序E序员؜口饭?/dc:creator>小E序E序员؜口饭?/author>Thu, 22 Nov 2007 02:41:00 GMThttp://m.tkk7.com/loocky/archive/2007/11/22/162301.htmlhttp://m.tkk7.com/loocky/comments/162301.htmlhttp://m.tkk7.com/loocky/archive/2007/11/22/162301.html#Feedback2http://m.tkk7.com/loocky/comments/commentRss/162301.htmlhttp://m.tkk7.com/loocky/services/trackbacks/162301.html阅读全文

]]>
用JACORB搭徏一个corba的开发环?/title><link>http://m.tkk7.com/loocky/archive/2007/11/21/162026.html</link><dc:creator>小E序E序员؜口饭?/dc:creator><author>小E序E序员؜口饭?/author><pubDate>Wed, 21 Nov 2007 02:36:00 GMT</pubDate><guid>http://m.tkk7.com/loocky/archive/2007/11/21/162026.html</guid><wfw:comment>http://m.tkk7.com/loocky/comments/162026.html</wfw:comment><comments>http://m.tkk7.com/loocky/archive/2007/11/21/162026.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/loocky/comments/commentRss/162026.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/loocky/services/trackbacks/162026.html</trackback:ping><description><![CDATA[<p>                   how to setup jacorb dev env<br /> 1:download JacORB_2_2</p> <p>       http://www.jacorb.org/download.html <br />   download ant<br />        http://ant.apache.org/bindownload.cgi</p> <p>2:extact JacORB_2_2.jar to d:\JacORB_2_2 </p> <p>3:setup sys environment</p> <p>       set ANT_HOME=<br />        set JAVA_HOME=<br />        set JACORB_HOME=d:\JacORB_2_2<br />        set PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin;%JACORB_HOME%\bin;<br />        set CLASSPAHT=.;%CLASSPAHT%;%ANT_HOME%\lib\ant.jar;%JACORB_HOME%\lib\jarorb.jar;%JACORB_HOME%\lib\idl.jar\;%JACORB_HOME%\lib\logkit-1.2.jar</p> <p>4:rename %JACORB_HOME%\etc\jacorb_properties.template to %JACORB_HOME%\etc\jacorb.properties<br />   and modify the 50th line to 53th line to<br />   <br />        #ORBInitRef.NameService=file:/y:/nsiona.ref<br />        <br /> ORBInitRef.NameService=file://d://test//NS_Ref<br />        <br /> #ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref<br />        <br /> #ORBInitRef.TradingService=http://www.x.y.z/~user/TraderRef<br />   <br />   modify 618th line to<br />        jacorb.naming.ior_filename=d://test//NS_Ref</p> <p>5:rename  %JACORB_HOME%\jacotemplate.bat to %JACORB_HOME%\jaco.bat<br />   <br />   and modify related env variable<br />   <br />   rename   %JACORB_HOME%\idltemplate.bat to %JACORB_HOME%\idl.bat<br />    <br />   and modify related env variable</p> <p> </p> <p>6:  use ant compile and build idl and java</p> <p><br />      cd  %JACORB_HOME%\demo\grid   </p> <p>     run ant<br />     <br />      the generate class file in %JACORB_HOME%\classes  and generated java file in %JACORB_HOME%\demo\grid</p> <p><br /> 7: open a new cmd window:<br />           cd %JACORB_HOME%   ns <br />   <br />    you can see the following result:    <br />        [ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]</p> <p>   open a new cmd window:<br />           cd %JACORB_HOME%   jaco demo.grid.Server<br />   you can see the following result:    <br />   [ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]<br />    <br />   open a new cmd window:<br />           cd %JACORB_HOME%   jaco demo.grid.client<br />     you can see the following result:    <br />   <br />   [ configuration jacorb loaded from file D:\work\nj\JACORB\etc\jacorb.properties]<br />    Height = 31<br />    Width = 14<br />    Old value at (30,13): 0.21<br />    Setting (30,13) to 470.11<br />    New value at (30,13): 470.11<br />    MyException, reason: This is only a test exception, no harm done :-)<br />    done.</p><img src ="http://m.tkk7.com/loocky/aggbug/162026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/loocky/" target="_blank">小E序E序员؜口饭?/a> 2007-11-21 10:36 <a href="http://m.tkk7.com/loocky/archive/2007/11/21/162026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 语法?OVER (PARTITION BY ..) 及开H函?转蝲http://m.tkk7.com/loocky/archive/2007/11/13/160213.html小E序E序员؜口饭?/dc:creator>小E序E序员؜口饭?/author>Tue, 13 Nov 2007 05:33:00 GMThttp://m.tkk7.com/loocky/archive/2007/11/13/160213.htmlhttp://m.tkk7.com/loocky/comments/160213.htmlhttp://m.tkk7.com/loocky/archive/2007/11/13/160213.html#Feedback13http://m.tkk7.com/loocky/comments/commentRss/160213.htmlhttp://m.tkk7.com/loocky/services/trackbacks/160213.html
oracle的分析函数over 及开H函?/div>
一Q分析函?strong style="color: black; background-color: #a0ffff">over
Oracle?.1.6开始提供分析函敎ͼ分析函数用于计算Zl的某种聚合|它和聚合函数的不同之处是
对于每个l返回多行,而聚合函数对于每个组只返回一行?
下面通过几个例子来说明其应用?nbsp;                                      
1Q统计某商店的营业额?nbsp;       
     date       sale
     1           20
     2           15
     3           14
     4           18
     5           30
    规则Q按天统计:每天都统计前面几天的总额
    得到的结果:
    DATE   SALE       SUM
    ----- -------- ------
    1      20        20           --1?nbsp;          
    2      15        35           --1天+2?nbsp;          
    3      14        49           --1天+2天+3?nbsp;          
    4      18        67            .          
    5      30        97            .
     
2:l计各班成WW一名的同学信息
    NAME   CLASS S                         
    ----- ----- ----------------------
    fda    1      80                     
    ffd    1      78                     
    dss    1      95                     
    cfe    2      74                     
    gds    2      92                     
    gf     3      99                     
    ddd    3      99                     
    adf    3      45                     
    asdf   3      55                     
    3dd    3      78              
   
    通过Q?nbsp;  
    --
    select * from                                                                       
    (                                                                            
    select name,class,s,rank()over(partition by class order by s desc) mm from t2
    )                                                                            
    where mm=1
    --
    得到l果Q?br />     NAME   CLASS S                       MM                                                                                        
    ----- ----- ---------------------- ----------------------
    dss    1      95                      1                      
    gds    2      92                      1                      
    gf     3      99                      1                      
    ddd    3      99                      1          
   
    注意Q?br />     1.在求W一名成l的时候,不能用row_number()Q因为如果同班有两个q列W一Qrow_number()只返回一个结?nbsp;         
    2.rank()和dense_rank()的区别是Q?br />       --rank()是蟩跃排序,有两个第二名时接下来是W四?br />       --dense_rank()l是连l排序,有两个第二名时仍然跟着W三?br />      
     
3.分类l计 (q显CZ?
    A   B   C                      
    -- -- ----------------------
    m   a   2                      
    n   a   3                      
    m   a   2                      
    n   b   2                      
    n   b   1                      
    x   b   3                      
    x   b   2                      
    x   b   4                      
    h   b   3
   select a,c,sum(c)over(partition by a) from t2                
   得到l果Q?br />    A   B   C        SUM(C)OVER(PARTITIONBYA)      
   -- -- ------- ------------------------
   h   b   3        3                        
   m   a   2        4                        
   m   a   2        4                        
   n   a   3        6                        
   n   b   2        6                        
   n   b   1        6                        
   x   b   3        9                        
   x   b   2        9                        
   x   b   4        9                        
  
   如果用sumQgroup by 则只能得?br />    A   SUM(C)                            
   -- ----------------------
   h   3                      
   m   4                      
   n   6                      
   x   9                      
   无法得到B列?nbsp;      
  
Q=Q=Q?/font>

select * from test

数据:
A B C
1 1 1
1 2 2
1 3 3
2 2 5
3 4 6


---B栏位值相同的对应的C 栏位值加?br /> select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum
from test

A B C C_SUM
1 1 1 1
1 2 2 7
2 2 5 7
1 3 3 3
3 4 6 6



---如果不需要已某个栏位的值分?那就要用 null

eg: 是C的栏位值summary 攑֜每行后面

select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum
from test

A B C C_SUM
1 1 1 17
1 2 2 17
1 3 3 17
2 2 5 17
3 4 6 17

 

求个人工资占部门工资的百分比

SQL> select * from salary;

NAME DEPT SAL
---------- ---- -----
a 10 2000
b 10 3000
c 10 5000
d 20 4000

SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;

NAME DEPT SAL PERCENT
---------- ---- ----- ----------
a 10 2000 20
b 10 3000 30
c 10 5000 50
d 20 4000 100

二:开H函?nbsp;          
      开H函数指定了分析函数工作的数据窗口大,q个数据H口大小可能会随着行的变化而变化,举例如下Q?
1Q?nbsp;    
   overQorder by salaryQ?按照salary排序q行累计Qorder by是个默认的开H函?br />    overQpartition by deptnoQ按照部门分?br /> 2Q?br />   overQorder by salary range between 5 preceding and 5 followingQ?br />    每行对应的数据窗口是之前行幅度g过5Q之后行q度g过5
   例如:对于以下?br />      aa
     1
     2
     2
     2
     3
     4
     5
     6
     7
     9
   
   sum(aa)overQorder by aa range between 2 preceding and 2 followingQ?br />    得出的结果是
            AA                       SUM
            ---------------------- -------------------------------------------------------
            1                       10                                                      
            2                       14                                                      
            2                       14                                                      
            2                       14                                                      
            3                       18                                                      
            4                       18                                                      
            5                       22                                                      
            6                       18                                                                
            7                       22                                                                
            9                       9                                                                 
             
   是_对于aa=5的一?Qsum?nbsp;  5-1<=aa<=5+2 的和
   对于aa=2来说 Qsum=1+2+2+2+3+4=14     Q?br />    又如 对于aa=9 Q?-1<=aa<=9+2 只有9一个数Q所以sum=9    Q?br />               
3Q其它:
     overQorder by salary rows between 2 preceding and 4 followingQ?br />           每行对应的数据窗口是之前2行,之后4?
4Q下面三条语句等效:           
     overQorder by salary rows between unbounded preceding and unbounded followingQ?br />           每行对应的数据窗口是从第一行到最后一行,{效Q?br />      overQorder by salary range between unbounded preceding and unbounded followingQ?br />            {效
     over(partition by null)


]]>
JMS复习http://m.tkk7.com/loocky/archive/2007/08/15/136816.html小E序E序员؜口饭?/dc:creator>小E序E序员؜口饭?/author>Wed, 15 Aug 2007 01:20:00 GMThttp://m.tkk7.com/loocky/archive/2007/08/15/136816.htmlhttp://m.tkk7.com/loocky/comments/136816.htmlhttp://m.tkk7.com/loocky/archive/2007/08/15/136816.html#Feedback0http://m.tkk7.com/loocky/comments/commentRss/136816.htmlhttp://m.tkk7.com/loocky/services/trackbacks/136816.html׃一些原因,最q要复习一些东西,所以就把JMS的东西再复习一遍,以下便是例子

jms 中最重要的几个概念destinationQACKNOWLEDGEQsubscribe,durable subscribe

destinationQtopic queque
  queue单点说就?:1 一个消息只能由一个consumerL费,别的consumer来消费的时候已l没了,先到先得
topic单点说就?:N 一个消息可以由多个consumer来消费,谁来消费都有
 subscribeQ拿topic来说如果当前订阅不是持久订阅Q只有再订阅后生产者生产得消息才能被consumer得到Q持久订阅只要没有被consumer消费Q早晚会消费q个消息
 
 
 
 一下是几个例子
 
 queuesendQqueque消息产生
 queuereceiveQqueque消息得消?br />  topicsend Qtopic消息得?br />  topicreceive1Qtopic消息的非订阅
 topicrecieve2Qtopic消息的持久订?br />  
 q个例子实在WEBLOGIC814上测试过的,当然要定义JMSSERVER,FACTORY,DESTINATION?br />  
 
 
 QueueSend
 
 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class QueueSend {
 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = " t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "SendJMSFactory";

 // Defines the queue.
 public final static String QUEUE = "SendJMSQueue";

 private QueueConnectionFactory qconFactory;

 private QueueConnection qcon;

 private QueueSession qsession;

 private QueueSender qsender;

 private Queue queue;

 private TextMessage msg;

 /**
  * Creates all the necessary objects for sending messages to a JMS queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException,
   JMSException {
  qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
  qcon = qconFactory.createQueueConnection();
  qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  queue = (Queue) ctx.lookup(queueName);
  qsender = qsession.createSender(queue);
  msg = qsession.createTextMessage();
  qcon.start();
 }

 /**
  * Sends a message to a JMS queue.
  *
  * @param message
  *            message to be sent
  * @exception JMSException
  *                if JMS fails to send message due to internal error
  */
 public void send(String message) throws JMSException {
  msg.setText(message);
  qsender.send(msg);
 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  qsender.close();
  qsession.close();
  qcon.close();
 }

 /**
  * main() method.
  *
  * @param args
  *            WebLogic Server URL
  * @exception Exception
  *                if operation fails
  */
 public static void main(String[] args) throws Exception {
  try {
   InitialContext ic = getInitialContext();
   QueueSend qs = new QueueSend();
   qs.init(ic, QUEUE);
   readAndSend(qs);
   qs.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 private static void readAndSend(QueueSend qs) throws IOException,
   JMSException {
  BufferedReader msgStream = new BufferedReader(new InputStreamReader(
    System.in));
  String line = null;
  boolean quitNow = false;
  do {
   System.out.print("Enter message (\"quit\" to quit): ");
   line = msgStream.readLine();
   if (line != null && line.trim().length() != 0) {
    qs.send(line);
    System.out.println("JMS Message Sent: " + line + "\n");
    quitNow = line.equalsIgnoreCase("quit");
   }
  } while (!quitNow);

 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }

}


QueueReceive

import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class QueueReceive implements MessageListener {
 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = " t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "SendJMSFactory";

 // Defines the queue.
 public final static String QUEUE = "SendJMSQueue";

 private QueueConnectionFactory qconFactory;

 private QueueConnection qcon;

 private QueueSession qsession;

 private QueueReceiver qreceiver;

 private Queue queue;

 private boolean quit = false;

 /**
  * Message listener interface.
  *
  * @param msg
  *            message
  */
 public void onMessage(Message msg) {
  try {
   String msgText;
   if (msg instanceof TextMessage) {
    msgText = ((TextMessage) msg).getText();
   } else {
    msgText = msg.toString();
   }

   System.out.println("Message Received: " + msgText);

//   if (msgText.equalsIgnoreCase("123")) {
//    synchronized (this) {
//     quit = true;
//     this.notifyAll(); // Notify main thread to quit
//    }
//   }
  } catch (JMSException jmse) {
   jmse.printStackTrace();
  }
 }

 /**
  * Creates all the necessary objects for receiving messages from a JMS
  * queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException,
   JMSException {
  qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
  qcon = qconFactory.createQueueConnection();
  qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  queue = (Queue) ctx.lookup(queueName);
  qreceiver = qsession.createReceiver(queue);
  qreceiver.setMessageListener(this);
  qcon.start();
 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  qreceiver.close();
  qsession.close();
  qcon.close();
 }

 /**
  * main() method.
  *
  * @param args
  *            WebLogic Server URL
  * @exception Exception
  *                if execution fails
  */

 public static void main(String[] args) throws Exception {

  InitialContext ic = getInitialContext();
  QueueReceive qr = new QueueReceive();
  qr.init(ic, QUEUE);

  System.out
    .println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");

  // Wait until a "quit" message has been received.
  synchronized (qr) {
   System.out.println("111111111111");
   while (!qr.quit) {
    try {
     System.out.println("2222222222");
     qr.wait();
     System.out.println("333333333");
    } catch (InterruptedException ie) {
    }
   }
  }
  qr.close();
 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }

}

 

TopicSend

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.jms.TopicPublisher;
public class TopicSend {
 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = " t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "SendJMSFactory";

 // Defines the queue.
 public final static String TOPIC = "SendJMSTopic";

 private TopicConnectionFactory tconFactory;

 private TopicConnection tcon;

 private TopicSession tsession;

 private TopicPublisher tsender;

 private Topic topic;

 private TextMessage msg;
 public static InitialContext ic ;

 /**
  * Creates all the necessary objects for sending messages to a JMS queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException,
   JMSException {
  tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
  tcon = tconFactory.createTopicConnection();
  tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
  System.out.println(topic);
  topic = (Topic) ctx.lookup(queueName);
  System.out.println(topic);
  tsender = tsession.createPublisher(topic);
  msg = tsession.createTextMessage();
  tcon.start();
 }

 /**
  * Sends a message to a JMS queue.
  *
  * @param message
  *            message to be sent
  * @exception JMSException
  *                if JMS fails to send message due to internal error
  */
 public void send(String message) throws JMSException ,NamingException{
  System.out.println(topic+"-----------");
  msg.setText(message);
  tsender.publish(msg);
 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  tsender.close();
  tsession.close();
  tcon.close();
 }

 /**
  * main() method.
  *
  * @param args
  *            WebLogic Server URL
  * @exception Exception
  *                if operation fails
  */
 public static void main(String[] args) throws Exception {
  try {
   ic= getInitialContext();
   TopicSend ts = new TopicSend();
   ts.init(ic, TOPIC);
   readAndSend(ts);
   ts.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 private static void readAndSend(TopicSend ts) throws IOException,
   JMSException,NamingException {
  BufferedReader msgStream = new BufferedReader(new InputStreamReader(
    System.in));
  String line = null;
  boolean quitNow = false;
  do {
   System.out.print("Enter message (\"quit\" to quit): ");
   line = msgStream.readLine();
   if (line != null && line.trim().length() != 0) {
    ts.send(line);
   
    System.out.println("JMS Message Sent: " + line + "\n");
    quitNow = line.equalsIgnoreCase("quit");
   }
  } while (!quitNow);

 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }

}

 

TopicReceive1

import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class TopicReceive1 implements MessageListener {
 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = " t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "SendJMSFactory";

 // Defines the queue.
 public final static String TOPIC = "SendJMSTopic";

 private TopicConnectionFactory tconFactory;

 private TopicConnection tcon;

 private TopicSession tsession;

 private TopicSubscriber tsubscriber;

 private Topic topic;

 private boolean quit = false;

 /**
  * Message listener interface.
  *
  * @param msg
  *            message
  */
 public void onMessage(Message msg) {
  System.out.println("===================");
  try {
   String msgText;
   if (msg instanceof TextMessage) {
    msgText = ((TextMessage) msg).getText();
   } else {
    msgText = msg.toString();
   }

   System.out.println("Message Received: " + msgText);

//   if (msgText.equalsIgnoreCase("123")) {
//    synchronized (this) {
//     quit = true;
//     this.notifyAll(); // Notify main thread to quit
//    }
//   }
  } catch (JMSException jmse) {
   jmse.printStackTrace();
  }
 }

 /**
  * Creates all the necessary objects for receiving messages from a JMS
  * queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException,
   JMSException {
  tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
  tcon = tconFactory.createTopicConnection();
  tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
  topic = (Topic) ctx.lookup(queueName);
  tsubscriber = tsession.createSubscriber(topic);
  //System.out.println("12");
  //Message msg = treceiver.receive();
  //msg.acknowledge();
  //tsubscriber = tsession.createSubscriber(topic);Message msg = tsubscriber.receive();msg.acknowledge();
  //System.out.println(msg);
  tsubscriber.setMessageListener(this);
  tcon.start();
 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  tsubscriber.close();
  tsession.close();
  tcon.close();
 }

 /**
  * main() method.
  *
  * @param args
  *            WebLogic Server URL
  * @exception Exception
  *                if execution fails
  */

 public static void main(String[] args) throws Exception {

  InitialContext ic = getInitialContext();
  TopicReceive1 tr1 = new TopicReceive1();
  tr1.init(ic, TOPIC);

  System.out
    .println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
  
  

  // Wait until a "quit" message has been received.
//  synchronized (tr1) {
//   System.out.println("111111111111");
//   while (!tr1.quit) {
//    try {
//     System.out.println("2222222222");
//     tr1.wait();
//     System.out.println("333333333");
//    } catch (InterruptedException ie) {
//    }
//   }
//  }
  tr1.close();
 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }

}


TopicReceive2


import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class TopicReceive2 {
 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = " t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "SendJMSFactory";

 // Defines the queue.
 public final static String TOPIC = "SendJMSTopic";

 private TopicConnectionFactory tconFactory;

 private TopicConnection tcon;

 private TopicSession tsession;

 private TopicSubscriber tsubscriber;

 private Topic topic;

 private boolean quit = false;


 /**
  * Creates all the necessary objects for receiving messages from a JMS
  * queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException,
   JMSException,InterruptedException {
  tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
  tcon = tconFactory.createTopicConnection();
  tcon.setClientID("IP10.200.7.104");
  tcon.start();
  
  tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
  System.out.println("333333333333");
  topic = (Topic) ctx.lookup(queueName);
  //tsubscriber = tsession.createSubscriber(topic);
  tsubscriber= tsession.createDurableSubscriber(topic,"88888");
   for (int i=0; i<3; i++) {
             //
             TextMessage message = (TextMessage) tsubscriber.receive();
             System.out.println("message["+i+"]: " + message.getText());
         }
          Thread.sleep(10000);
  //System.out.println("12");
  //Message msg = treceiver.receive();
  //msg.acknowledge();
  //tsubscriber = tsession.createSubscriber(topic);Message msg = tsubscriber.receive();msg.acknowledge();
  //System.out.println(msg);

 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  tsubscriber.close();
  tsession.close();
  tcon.close();
 }

 /**
  * main() method.
  *
  * @param args
  *            WebLogic Server URL
  * @exception Exception
  *                if execution fails
  */

 public static void main(String[] args) throws Exception {

  InitialContext ic = getInitialContext();
  TopicReceive2 tr2 = new TopicReceive2();
  tr2.init(ic, TOPIC);

  System.out
    .println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
  
  

  // Wait until a "quit" message has been received.
//  synchronized (tr1) {
//   System.out.println("111111111111");
//   while (!tr1.quit) {
//    try {
//     System.out.println("2222222222");
//     tr1.wait();
//     System.out.println("333333333");
//    } catch (InterruptedException ie) {
//    }
//   }
//  }
  tr2.close();
 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }

}



]]>
Linux下Y件安装方法ȝ(?http://m.tkk7.com/loocky/archive/2007/08/10/135711.html小E序E序员؜口饭?/dc:creator>小E序E序员؜口饭?/author>Fri, 10 Aug 2007 01:39:00 GMThttp://m.tkk7.com/loocky/archive/2007/08/10/135711.htmlhttp://m.tkk7.com/loocky/comments/135711.htmlhttp://m.tkk7.com/loocky/archive/2007/08/10/135711.html#Feedback0http://m.tkk7.com/loocky/comments/commentRss/135711.htmlhttp://m.tkk7.com/loocky/services/trackbacks/135711.html
一、rpm包安装方式步骤:
引用:

1、找到相应的软g包,比如soft.version.rpmQ下载到本机某个目录Q?br>
2、打开一个终端,su -成root用户Q?br>
3、cd soft.version.rpm所在的目录Q?br>
4、输入rpm -ivh soft.version.rpm




二、deb包安装方式步骤:

引用:
1、找到相应的软g包,比如soft.version.debQ下载到本机某个目录Q?br>
2、打开一个终端,su -成root用户Q?br>
3、cd soft.version.deb所在的目录Q?br>
4、输入dpkg -i soft.version.deb




三、tar.gz源代码包安装方式Q?br>
引用:
1、找到相应的软g包,比如soft.tar.gzQ下载到本机某个目录Q?br>
2、打开一个终端,su -成root用户Q?br>
3、cd soft.tar.gz所在的目录Q?br>
4、tar -xzvf soft.tar.gz //一般会生成一个soft目录

5、cd soft

6?/configure

7、make

8、make install




四、tar.bz2源代码包安装方式Q?br>
引用:
1、找到相应的软g包,比如soft.tar.bz2Q下载到本机某个目录Q?br>
2、打开一个终端,su -成root用户Q?br>
3、cd soft.tar.bz2所在的目录Q?br>
4、tar -xjvf soft.tar.bz2 //一般会生成一个soft目录

5、cd soft

6?/configure

7、make

8、make install




五、apt方式安装Q?br>
引用:
1、打开一个终端,su -成root用户Q?br>
2、apt-cache search soft 注:soft是你要找的Y件的名称或相关信?br>
3、如?中找C软gsoft.versionQ则用apt-get install soft.version命o安装软g 注:只要你可以上|,只需要用apt-cache search查找软gQ用apt-get install软g




六、bin文g安装Q?br>
如果你下载到的Y件名是soft.binQ一般情况下是个可执行文Ӟ安装Ҏ如下Q?br>
引用:
1、打开一个终端,su -成root用户Q?br>
2、chmod +x soft.bin

3?/soft.bin //q行q个命o可以安装Y件了




七、不需要安装的软gQ?br>
有了些YӞ比如lumaqqQ是不需要安装的Q自带jre解压~后可直接运行。假设下载的是lumaqq.tar.gzQ用方法如下:

引用:
1、打开一个终端,su -成root用户Q?br>
2、tar -xzvf lumaqq.tar.gz //q一步会生成一个叫LumaQQ的目?br>
3、cd LumaQQ

4、chmod +x lumaqq //讄lumaqqq个E序文g为可q行

5、此时就可以q行lumaqq了,用命?/lumaqq卛_Q但每次q行要输入全路径或切换到刚才生成的LumaQQ目录?br>
6、ؓ了保证不讄路径可以用Q你可以?bin目录下徏立一个lumaqq的链接,用命令ln -s lumaqq /bin/ 卛_Q以后Q何时候打开一个终端输入lumaqq可以启动QQ聊天软g?br>
7、如果你要想lumaqq有个菜单,使用菜单~辑工具Q比如Alacarte Menu EditorQ找C面生成的LumaQQ目录里的lumaqq讄一个菜单项可以了Q当然你也可以直接到 /usr/share/applications目录Q按照里面其?.desktop文g的格式生成一个自qdesktop文g卛_?/div>


]]>
计划d工具 cron 的配|和说明 转自linuxsir.orghttp://m.tkk7.com/loocky/archive/2007/07/24/132008.html小E序E序员؜口饭?/dc:creator>小E序E序员؜口饭?/author>Tue, 24 Jul 2007 03:14:00 GMThttp://m.tkk7.com/loocky/archive/2007/07/24/132008.htmlhttp://m.tkk7.com/loocky/comments/132008.htmlhttp://m.tkk7.com/loocky/archive/2007/07/24/132008.html#Feedback0http://m.tkk7.com/loocky/comments/commentRss/132008.htmlhttp://m.tkk7.com/loocky/services/trackbacks/132008.html计划d工具 cron 的配|和说明

作者:北南南北
来自Q?/strong>LinuxSir.Org
摘要Q?/strong>Linux操作pȝ中,计划d通常由cron来承担,了解或掌握cronQ能为我们管理服务器带来更多的便利,也能省却更多的时间。本文也举了一些简单明了的例子Qؓ了让新手上\方便Q?/p>

目录


++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++


1、计划Q务概_

计划dQ是d在约定的旉执行已经计划好的工作Q这是表面的意思。在Linux中,我们l常用到 crond 服务器来完成q项工作。cron服务器可以根据配|文件约定的旉来执行特定的作务。比如我们可以在配置文g中约定每天早?点,对httpd 服务器重新启动,q就是一个计划Q务;

下面我们先来说说cronQ?/p>


2、cronQ?br>

在Linuxpȝ中,计划d一般是由cron承担Q我们可以把cron讄为开机时自动启动。cron启动后,它会d它的所有配|文Ӟ全局性配|文?etc/crontabQ以及每个用L计划d配置文gQ,然后cron会根据命令和执行旉来按时来调用度工作Q务?/p>


2.1 cron 的安装和启动Q?br>

在一般情况下Qcron都是pȝ默认安装的,我们要学会查看Y件包是否已经安装Q?/p>


2.1.1 在Redhat ?Fedora{RPM包管理的pȝ的安装;

判断pȝ是否已经安装cron相关的包

Fedora 5.0 pȝ的情况;

其它版本的Fedora及Redhat的系l和q相|

[root@localhost ~]# rpm -qa |grep cron
vixie-cron-4.1-54.FC5
anacron-2.3-36.1
crontabs-1.10-7.1

 

其中vixie-cron软g包是cron的主E序Q您可以通过下面的命令来了解它,其它软g包同理;

[root@localhost beinan]# rpm -ql vixie-cron

 

crontabs 软g包是用来安装、卸装、或列D用来驱动 cron 守护q程的表格的E序。cron 守护q程?crontab 文g来查看某个指定命令被调度执行的时间。如果命令已l调度,守护q程׃执行它们。了解crontabs软g包都安装了些什么,应该用下面的命oQ?/p>

[root@localhost beinan]# rpm -ql crontabs

 

如果没有安装Q可以从光盘中找出文件名带有cron字样的Y件包来安装?/p>

[root@localhost ~]# rpm -ivh vixie-cron-4.1-54.FC5*
[root@localhost ~]# rpm -ivh crontabs*

 

也可以用yum 来在U安装;

[root@localhost ~]# yum install vixie-cron
[root@localhost ~]# yum install crontabs

 


2.1.2 在Slackwarepȝ中的安装Q?br>

在Slackware中cron软g包是 dcronQ您可以在光盘中扑և来安装它Q?/p>

查看是否已经安装了dcron软g包,您可以这h看。在q里能列Y件包详细的安装情况;

[root@localhost ~]# more /var/adm/packages/dcron*

 

如果没有安装Q请用下面的命o来安装。在W一张安装盘中找出dcron软g包;

[root@localhost ~]# installpkg dcron*.tgz

 


2.1.3 cron 的开启、停止、重新启动方法;

cron配置文g被修改后Q想让新文g生效Q必重新crond服务器,有两U方法可供选择Q?/p>


W一U?在Fedora或Redhat {以RPM包管理的pȝ中;

[root@localhost ~]# /etc/init.d/crond start
[root@localhost ~]# /etc/init.d/crond stop
[root@localhost ~]# /etc/init.d/crond restart

 

如果惛_Fedora ?Redhat 或以q些发行版ؓ基础克隆的发行版Q如果想自动开行,L下面的办法;

[root@localhost ~]# chkconfig --levels 35 crond on

 

W二U:通用

[root@localhost ~]# pgrep crond 注:判断crond 是否在运行;
[root@localhost ~]# pkill crond 注:杀掉正在运行中的crondQ?br>[root@localhost ~]# pgrep crond 注:查看是否被杀掉了Q?br>[root@localhost ~]# /usr/sbin/crond 注:q行crondQ?/code>

 


2.2 cron 配置文gQ?br>

cron 是一个服务器E序Q我们都知道Linux的服务器的配|,大多是通过配置文g来完成的Qcron自然也不例外Q在Redhat/Fedora {系l中它的全局性配|文件是/etc/crontabQ在Slackwarepȝ中,全局性文件是/var/spool/cron/crontabs/root 。每个用户也有自qcron配置文gQ我们可以通过crontab -e 来编辑它Q?/p>


2.2.1 全局性配|文Ӟ

下面是一个全局性的配置文g例子Q以Fedora Core 5ZQ?/p>

[root@localhost ~]# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
1 * * * * root run-parts /etc/cron.hourly
#
2 4 * * * root run-parts /etc/cron.daily
#
22 4 * * 7 root run-parts /etc/cron.weekly
#
42 4 1 * * root run-parts /etc/cron.monthly
#
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg

 

对于全局性配|文Ӟ我们要用root权限来更改,一般是通过crontab -e 来修攏V但有时也ƈ不一定是q样的,比如Fedora Core 5 如果通过crontab -e 修改的是root用户的cron 配置文g。所以我们要在Fedora Core 5中修改全局性配|文件可以用vi ~辑器来修改。vi的用法请参考:《文件编辑器 vi?/font>

在全局性配|文件中Q定义了可执行命令的路径环境变量Q所用SHELLcd的定义等Q这些大多不用修改;我们l常d的是计划d或修改Q务执行的旉{;

在全局性配|文件中Q我们发现有cMq些行;

1 * * * * root run-parts /etc/cron.hourly 注:表示每个时的第一分钟Q开始执?etc/hourly目录下的可执行程序或脚本Q?br>2 4 * * * root run-parts /etc/cron.daily 注:表示每天??分,开始执?etc/cron.daily目录下的可执行程序或脚本Q?br>22 4 * * 7 root run-parts /etc/cron.weekly 注:每年W?个周4Ҏ22分,开始执?/etc/cron.weekly目录下的可执行程序或脚本Q?br>42 4 1 * * root run-parts /etc/cron.monthly 注:每月W?天的4?2分,开始执?etc/cron.monthly目录下的可执行程序或脚本Q?/code>

 

q些行是用来在同一旉扚w执行d的,我们在以后的例子中独立出来解_在这里只是让大家心中有数Q?/p>


2.2.2 cron 配置计划d的书写格?br>

分钟 时 ???Qȝ户名Q?命o

 

说明Q?/strong>

W一D应该定义的是:分钟Q表C每个小时的W几分钟来执行。范围是?-59
        W二D应该定义的是:时Q表CZW几个小时来执行Q范围是?-23
        W三D应该定义的是:日期Q表CZ每个月的W几天执行,范围?-31
        W四D应该定义的是:月,表示每年的第几个月来执行Q范围从1-12
        W五D应该定义的是:周,表示每周的第几天执行Q范围从0-6Q其?0表示星期日?
        每六D应该定义的是:用户名,也就是执行程序要通过哪个用户来执行,q个一般可以省略;
        W七D应该定义的是:执行的命令和参数?
        

注:其中用户名可是省略,用户名定义的是程序用哪个用户来执行,比如mysql服务器,我们可以定义成以mysql用户来启动、停止、重新启动,q时要写上用户名Q不q对于cron来说意义不是太大Q因为每个用户都有自qcron配置文g。有些程序的启动必须用到root用户Q这时我们就可以修改root用户的cron配置文gp了。在每个用户的配|文件中Q不必指定用户名?/p>

我们可以把计划Q务写在全局性配|文件中Q如果您x一个计划放入全局性配|文件中Q就得改发行版所对应的cron全局配置文gQ比如Fedora 5的全局性配|文件是/etc/crontab文gQ?/p>

每个用户也能定义自己的cron配置文gQ用crontab -e 命o来定义;

举一例:让机器在每天8?0分重新启动;

关于旉格式中有7个字Dc我们可以直接更Ҏ者添加,当然q是pȝd调用。D个例子,比如我在每天的早??0分重新启动机器,可以在
/etc/crontab中加入下面的两句Q第一句就是注释了。以#号开始,后面写一个自p知道q是什么Q务的备注Q?/p>

# reboot OS
30 8 * * * root /sbin/reboot

 

W一D应该定义的是:分钟Q表C每个小时的W几分钟来执行。范围是?-59
W二D应该定义的是:时Q表CZW几个小时来执行Q范围是?-23
W三D应该定义的是:日期Q表CZ每个月的W几天执行,范围?-31
W四D应该定义的是:月,表示每年的第几个月来执行Q范围从1-12
W五D应该定义的是:周,表示每周的第几天执行Q范围从0-6Q其?0表示星期日?br>每六D应该定义的是:用户名,也就是执行程序要通过哪个用户来执行,q个一般可以省略;
W七D应该定义的是:执行的命令和参数?/p>

Ҏ上面的例子就知道Q?0是不是分钟?Q?是不是小Ӟ如果?代表的地方,表示全部Q也是_每个月,每天Q每星期都要执行。root 表示用root用户执行Q命令是/sbin/reboot Q也是_pȝ在每?8?0分重新启动;

我们可以把每??0分重新启动的计划d写入cron全局性配|文件中Q也可以定义在root用户自己的cron配置文g中。如果定义在root自己的配|文ӞLrootw䆾来执?crontab -e 来修攚w|文Ӟcrontab -e q入修改配置文g的过E,其实和vi的用法一P请参看vi 的用法:《文件编辑器 vi?/font>

让配|文件生效:如果让配|文件生效,q得重新启动cronQ切讎ͼ既然每个用户下的cron配置文g修改后。也要重新启动cron服务器?/p>

在Fedora 和Redhat中,我们应该用;

[root@localhost ~]# /etc/init.d/crond restart

 

如果让crond 在开机时q行Q应该改变其q行U别Q?/p>

[root@localhost ~]# chkconfig --levels 35 crond on

 

在Slackware中,如果开动运行;

查看/etc/rc.d/rc.M文g是否有如的行Q如果没有就加上Q大多是有的Q?/p>

# Start crond (Dillon's crond):
if [ -x /usr/sbin/crond ]; then
  /usr/sbin/crond -l10 >>/var/log/cron 2>&1
</cdoe>
<b>
如果惌立即让cron重启生效Q也可以用下面的办法Q?br></b>
<code>
[root@localhost ~]# pgrep crond 注:查看crond服务器是否运行;
2022
[root@localhost ~]# pkill crond 注:杀死crondQ?br>[root@localhost ~]# pgrep crond 注:查看crond是否退出;
[root@localhost ~]# /usr/sbin/crond 注:启动crondQ?br>[root@localhost ~]# pgrep crond 注:查看crond 是否已经q行得v来了Q?br>3883

 


2.2.3 关于同一旉Q同时执行多个Q务的定义ҎQ?br>

我们在前面已l说q,在全局性配|文件中Q有cM如下的段落;

1 * * * * root run-parts /etc/cron.hourly 注:表示每个时的第一分钟Q开始执?etc/hourly目录下的可执行程序或脚本Q?br>2 4 * * * root run-parts /etc/cron.daily 注:表示每天??分,开始执?etc/cron.daily目录下的可执行程序或脚本Q?br>22 4 * * 7 root run-parts /etc/cron.weekly 注:每年W?个周4Ҏ22分,开始执?/etc/cron.weekly目录下的可执行程序或脚本Q?br>42 4 1 * * root run-parts /etc/cron.monthly 注:每月W?天的4?2分,开始执?etc/cron.monthly目录下的可执行程序或脚本Q?/code>

 

举例来说Q我惛_每天5?0分来重新启动httpd 服务器,与此同时Q我们也可以同时下蝲一个ISO文g。如果我们按书写计划d的规则一条一条的来书写,q添加到全局是有炚w烦。不如写一个脚本放?etc/crond.daily目录中。然后把其权限设|ؓ755 Q关于权限的讄Q请参考:《Linux 文g和目录的属性?/font>Q?/p>

当然我们得改一改上面的 带有/etc/cron.daily那行Q改为如下;

10 5 * * * root run-parts /etc/cron.daily
</cdoe>
然后我们?etc/crond.daily目录中创Z个文Ӟ一个是用来重启httpd服务器的Q如下;
<code>
[root@localhost cron.daily]# touch httpd.sh
[root@localhost cron.daily]# chmod 755 httpd.sh
[root@localhost cron.daily]# echo "/etc/init.d/httpd restart" > httpd.sh
[root@localhost cron.daily]# more httpd.sh
/etc/init.d/httpd restart

 

如果我想在每??0分下载FC5的镜像,可以再创Z个文件fc5down.sh

[root@localhost cron.daily]# touch fc5down.sh
[root@localhost cron.daily]# chmod 755 fc5down.sh
[root@localhost cron.daily]# echo "/usr/bin/wget http://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso" > fc5down.sh
[root@localhost cron.daily]# more fc5down.sh
/usr/bin/wget http://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso

 

然后我们重新启动一下crondp了;

[root@localhost cron.daily]# pkill crond
[root@localhost cron.daily]# prep crond
[root@localhost cron.daily]# crond&

 

注意Q?/strong>我只是想说明一下,在同一旉 执行多个计划d的简单用法,q不是有意教l您每天早上都下载FC5的映像。我举这个例子是Z初学者了解这个功能。如果您有好多的d在某一时刻执行Q那p己写脚本文g。放?etc目录下的cron.hourly 、cron.daily 、cron.weekly 、cron.monthly 目录中。凡是放q这些目录的可执行脚本,都能在约定的旉内准执行。每个目录有每个目录的用途;


2.2.4 对于用户自n的cron 配置文g的说明;

每个用户都有自己的cron配置文gQ通过crontab -e 可以编辑,一般的情况下,在Fedora和Redhat的发行版Q我们编辑好用户的cron配置文g保存退出后Q系l会自动存放于/var/spool/cron/目录中,文g以用户名命名。在Slackware中是位于/var/spool/cron/crontabs/目录中。其它的发行版都差不多,有点cM。自己找扑֐Q查看用L计划d是crontab -l

crontab -e 注:~辑用户的cron配置文gQ?br>crontab -l 注:查看用户的计划Q务;

 

比如我用beinan用户来运行crontab -e Q?/p>

[beinan@localhost ~]$ id 注:判断所用用戯n份;
uid=500(beinan) gid=500(beinan) groups=500(beinan)
[beinan@localhost ~]$ crontab -e 注:~辑用户beinan的计划Q务;

 

我们在里面定义一个Q务;

40 20 * * * /usr/bin/wget http://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso

 

保存退出后Q我们用下面的命令来查看beinan用户的计划Q务;

[beinan@localhost ~]$ crontab -l
40 20 * * * /usr/bin/wget http://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso

 

配置好后Q我们还要重新启动crond服务器,每个用户cron配置文g的改动都得重新启动crond服务器;前面已经说过了,q里省略Q值得注意的是重启crond服务器,需要root权限Q您可以用su命o切换到root 用户Q然后再来重启crondQ?/p>


在Fedora或Redhat{以RPM包管理的发行版中Q?br>

[beinan@localhost ~]$ su
口oQ?br>[root@localhost beinan]# /etc/init.d/crond restart
停止 crondQ?[定]
启动 crondQ?[定]

 


也可以先杀死crondQ再q行crond命o的办法来启动Q?br>

[root@localhost beinan]# pkill crond
[root@localhost beinan]# pgrep crond
[root@localhost beinan]# /usr/sbin/crond
[root@localhost beinan]# pgrep crond
6664

 


3、计划Q务的应用范围Q?br>

计划d主要是让pȝ自动完成一些工作。比如我们可以让pȝ自动在某一时刻清理或备份httpd服务器的日志Q然后重新启动httpd服务器,q对|络理员来说是很重要的。也可以让系l自动清IZ?tmp目录的垃圾文件?/p>

另外值得一提的是,LinuxSir.Org 有很多子站,每个子站都有RSSQ能让这些站点的RSS怺投递,也是用cron来完成,比如是在早上4点左叛_始执行这个Q务。这是一个极费资源的过E,如果不是攑֜在线人少的时候,基本无法完成Q所以只能放在早上进行。作为SIR的管理员Q不可能每天早上4点v来点鼠标来完成这些事吧。所以最好的办法是通过cron来自动运行,以在服务器最清闲的时候来完成q项工作Q?/p>



]]>
redhat enterprise 4 x的分辨率讄高了的解军_?/title><link>http://m.tkk7.com/loocky/archive/2007/07/24/131966.html</link><dc:creator>小E序E序员؜口饭?/dc:creator><author>小E序E序员؜口饭?/author><pubDate>Tue, 24 Jul 2007 01:19:00 GMT</pubDate><guid>http://m.tkk7.com/loocky/archive/2007/07/24/131966.html</guid><wfw:comment>http://m.tkk7.com/loocky/comments/131966.html</wfw:comment><comments>http://m.tkk7.com/loocky/archive/2007/07/24/131966.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/loocky/comments/commentRss/131966.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/loocky/services/trackbacks/131966.html</trackback:ping><description><![CDATA[分L率设|高了Xh后花屏,无法通过X界面恢复回去Q只能用普通用戯来后Qsu 到root上来扑ֈXORG.CONF   文g<br><br>修改/etc/X11/xorg.conf  <br><br>screen里面的设|最大的那个L好了,重启可以了<img src ="http://m.tkk7.com/loocky/aggbug/131966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/loocky/" target="_blank">小E序E序员؜口饭?/a> 2007-07-24 09:19 <a href="http://m.tkk7.com/loocky/archive/2007/07/24/131966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>redhat x注销命o详解http://m.tkk7.com/loocky/archive/2007/07/17/130807.html小E序E序员؜口饭?/dc:creator>小E序E序员؜口饭?/author>Tue, 17 Jul 2007 05:27:00 GMThttp://m.tkk7.com/loocky/archive/2007/07/17/130807.htmlhttp://m.tkk7.com/loocky/comments/130807.htmlhttp://m.tkk7.com/loocky/archive/2007/07/17/130807.html#Feedback0http://m.tkk7.com/loocky/comments/commentRss/130807.htmlhttp://m.tkk7.com/loocky/services/trackbacks/130807.html一、注销Q关机,重启

  注销pȝ的logout命o

  1QLogout 注销是登陆的相对操作Q登陆系l后Q若要离开pȝQ用户只要直接下达logout命o卛_:

  [root@localhost root]#logout

  Red Hat Linuxrelease 9(Shike)

  Kernel 2.4.20.8 on an i686

  Login: ← 回到登陆的画?/p>

  2Q关机或重新启动的shutdown命o

  Shutdown命o可以关闭所有程序,依照用户的需要,重新启动或关机?/p>

  参数说明如下:

  ?立即x:-h 参数让系l立卛_机。范例如?

  [root@localhost root]#shutdown –h now ← 要求pȝ立即x

  ?指定x旉:time参数可指定关机的旉;或设|多久时间后q行shutdown命oQ范例如?

  [root@localhost root]#shutdown now ← 立刻x

  [root@localhost root]#shutdown +5 ← 5分钟后关?/p>

  [root@localhost root]#shutdown 10:30 ← ?0:30时关?/p>

  ?x后自动重?-r 参数讄x后重新启动。范例如?

  [root@localhost root]#shutdown -r now ← 立刻关闭pȝq?/p>

  [root@localhost root]#shutdown -r 23:59 ← 指定?3:59旉启动

  3Q重新启动计机的reboot命o

  ֐思义Qreboot命o是用来重新启动系l的。常用的参数如下:

  ?-f 参数:不依正常的程序运行关机,直接关闭pȝq新启动计机?/p>

  ?-I 参数:在在重新启动之前关闭所有网l接口?/p>

  虽然reboot命o有个参数可以使用Q但是一般只需要单独运行reboot命o可以了



]]>
վ֩ģ壺 APPѹۿƵ| ŷ㽶ۺ| ˳վ7777Ƶ| ƷþƵ| պѹۿ| ձվۿ| պƵѿ| ձa߹ۿ| ĻmvѸƵ7| Ƶۿ| ëɫëƬѹۿ| Ʒѹۿ| ѵɬɬƵ߲| ŮѹۿƬ| һëƬһëƬaa| ޹Ʒľþþ| ۺɫ߹ۿ| avɫ㽶һ| ޹ۺϾƷĵһ| ޾Ʒþþþ| Ʒ޳a߹ۿ| Ůվѹۿ| ţţ߾Ʒۿ| ƷҳѸ߹ۿ| 㻨߹ۿѹۿͼƬ| 91Ƶ| 99þþùƷ| 97Ƶ| Ʒѿ㽶| ޾Ʒ͵Ƶѹۿ| ŷղվ| ޹ۺרߵӰ | hƵ߹ۿվ| й߹ۿѹ| ֳִִӲƵ| jizzjizzٸ| ŮͬëƬ߲| 99ƵѹۿƵ | ձvѷƵ| ѹۿվ| ˾Ʒձר|