
2007年7月17日
利用免費的
英語角把英語練好
北京 也樂英語為了滿足廣大英語愛好者的需要特推出周末免費英語角服務(wù),
北京英語角的組織形式如下:
1:由也樂英語派出一名外教和一名助理負責組織英語角的活動。
2: 英語角每周組織一次活動,也樂英語培訓(xùn)學(xué)校提供一間教室為大家的活動場所。
3:英語愛好者可以免費參加英語角的活動,不收取任何費用,此活動是公益活動,也樂英
語不收取任何費用,也不限制參加次數(shù)。
4:也樂英語免費提供給英語愛好者茶水、咖啡、以及活動所采用的書籍報紙。
5:每周一到2個話題,由外教提前一周告訴大家,大家可以簡單準備,以便在課堂上
跟外教以及同學(xué)交流。
6:外教會糾正大家的發(fā)音、語法、詞匯上的錯誤,會形成一些總結(jié),也希望大家能夠暢所
欲言,大膽的說英語。
7:所有參加英語角的愛好者,請您在交流期間把手機調(diào)為靜音。
也樂英語地址:北京豐臺區(qū)馬家堡西路15號 時代風帆大廈2區(qū)1901
交通狀況:地鐵四號線角門西站A口上樓即可。 51、501、54、529、698、646、707 嘉園
二里東門下車
聯(lián)系電話:010-58423871 15330275871
此活動由于報名數(shù)量眾多,所以需要大家提前預(yù)約。
也樂英語網(wǎng)站:www.yellenglish.com
也樂英語 爭做北京最好的英語角.
posted @
2011-06-19 09:35 小小程序程序員混口飯吃 閱讀(2137) |
評論 (0) |
編輯 收藏
我認為最大的沖擊莫過于 惠普,oracle跟惠普的直接競爭會加大,從合作變?yōu)楦偁帲艺J為惠普如果不收購redhat來對抗,未來肯定落下風!
posted @
2009-04-22 09:56 小小程序程序員混口飯吃 閱讀(644) |
評論 (0) |
編輯 收藏
摘要: 上篇文章講述了jacorb 的配置,本章講敘其應(yīng)用,隨后的幾篇文章會重點講述corba的開發(fā)
JACORB開發(fā)以及corba的請求方式:
JacORB的應(yīng)用開發(fā)一般分為以下五步:
1.寫IDL接口定義
2.編譯IDL接口定義生成Java類
3.實現(xiàn)步驟2中生成的接口
4.寫服務(wù)器啟動類,并注冊到ORB
5.寫客戶端去獲取服務(wù)對象引用
&nb...
閱讀全文
posted @
2007-11-22 10:41 小小程序程序員混口飯吃 閱讀(8315) |
評論 (2) |
編輯 收藏
how to setup jacorb dev env
1:download JacORB_2_2
http://www.jacorb.org/download.html
download ant
http://ant.apache.org/bindownload.cgi
2:extact JacORB_2_2.jar to d:\JacORB_2_2
3:setup sys environment
set ANT_HOME=
set JAVA_HOME=
set JACORB_HOME=d:\JacORB_2_2
set PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin;%JACORB_HOME%\bin;
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
4:rename %JACORB_HOME%\etc\jacorb_properties.template to %JACORB_HOME%\etc\jacorb.properties
and modify the 50th line to 53th line to
#ORBInitRef.NameService=file:/y:/nsiona.ref
ORBInitRef.NameService=file://d://test//NS_Ref
#ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref
#ORBInitRef.TradingService=http://www.x.y.z/~user/TraderRef
modify 618th line to
jacorb.naming.ior_filename=d://test//NS_Ref
5:rename %JACORB_HOME%\jacotemplate.bat to %JACORB_HOME%\jaco.bat
and modify related env variable
rename %JACORB_HOME%\idltemplate.bat to %JACORB_HOME%\idl.bat
and modify related env variable
6: use ant compile and build idl and java
cd %JACORB_HOME%\demo\grid
run ant
the generate class file in %JACORB_HOME%\classes and generated java file in %JACORB_HOME%\demo\grid
7: open a new cmd window:
cd %JACORB_HOME% ns
you can see the following result:
[ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]
open a new cmd window:
cd %JACORB_HOME% jaco demo.grid.Server
you can see the following result:
[ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]
open a new cmd window:
cd %JACORB_HOME% jaco demo.grid.client
you can see the following result:
[ configuration jacorb loaded from file D:\work\nj\JACORB\etc\jacorb.properties]
Height = 31
Width = 14
Old value at (30,13): 0.21
Setting (30,13) to 470.11
New value at (30,13): 470.11
MyException, reason: This is only a test exception, no harm done :-)
done.
posted @
2007-11-21 10:36 小小程序程序員混口飯吃 閱讀(4263) |
評論 (4) |
編輯 收藏
oracle的分析函數(shù)over 及開窗函數(shù)
一:分析函數(shù)over
Oracle從8.1.6開始提供分析函數(shù),分析函數(shù)用于計算基于組的某種聚合值,它和聚合函數(shù)的不同之處是
對于每個組返回多行,而聚合函數(shù)對于每個組只返回一行。
下面通過幾個例子來說明其應(yīng)用。
1:統(tǒng)計某商店的營業(yè)額。
date sale
1 20
2 15
3 14
4 18
5 30
規(guī)則:按天統(tǒng)計:每天都統(tǒng)計前面幾天的總額
得到的結(jié)果:
DATE SALE SUM
----- -------- ------
1 20 20 --1天
2 15 35 --1天+2天
3 14 49 --1天+2天+3天
4 18 67 .
5 30 97 .
2:統(tǒng)計各班成績第一名的同學(xué)信息
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
通過:
--
select * from
(
select name,class,s,rank()over(partition by class order by s desc) mm from t2
)
where mm=1
--
得到結(jié)果:
NAME CLASS S MM
----- ----- ---------------------- ----------------------
dss 1 95 1
gds 2 92 1
gf 3 99 1
ddd 3 99 1
注意:
1.在求第一名成績的時候,不能用row_number(),因為如果同班有兩個并列第一,row_number()只返回一個結(jié)果
2.rank()和dense_rank()的區(qū)別是:
--rank()是跳躍排序,有兩個第二名時接下來就是第四名
--dense_rank()l是連續(xù)排序,有兩個第二名時仍然跟著第三名
3.分類統(tǒng)計 (并顯示信息)
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
得到結(jié)果:
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
如果用sum,group by 則只能得到
A SUM(C)
-- ----------------------
h 3
m 4
n 6
x 9
無法得到B列值
=====
select * from test
數(shù)據(jù):
A B C
1 1 1
1 2 2
1 3 3
2 2 5
3 4 6
---將B欄位值相同的對應(yīng)的C 欄位值加總
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
二:開窗函數(shù)
開窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個數(shù)據(jù)窗口大小可能會隨著行的變化而變化,舉例如下:
1:
over(order by salary) 按照salary排序進行累計,order by是個默認的開窗函數(shù)
over(partition by deptno)按照部門分區(qū)
2:
over(order by salary range between 5 preceding and 5 following)
每行對應(yīng)的數(shù)據(jù)窗口是之前行幅度值不超過5,之后行幅度值不超過5
例如:對于以下列
aa
1
2
2
2
3
4
5
6
7
9
sum(aa)over(order by aa range between 2 preceding and 2 following)
得出的結(jié)果是
AA SUM
---------------------- -------------------------------------------------------
1 10
2 14
2 14
2 14
3 18
4 18
5 22
6 18
7 22
9 9
就是說,對于aa=5的一行 ,sum為 5-1<=aa<=5+2 的和
對于aa=2來說 ,sum=1+2+2+2+3+4=14 ;
又如 對于aa=9 ,9-1<=aa<=9+2 只有9一個數(shù),所以sum=9 ;
3:其它:
over(order by salary rows between 2 preceding and 4 following)
每行對應(yīng)的數(shù)據(jù)窗口是之前2行,之后4行
4:下面三條語句等效:
over(order by salary rows between unbounded preceding and unbounded following)
每行對應(yīng)的數(shù)據(jù)窗口是從第一行到最后一行,等效:
over(order by salary range between unbounded preceding and unbounded following)
等效
over(partition by null)
|
|
|
posted @
2007-11-13 13:33 小小程序程序員混口飯吃 閱讀(50040) |
評論 (13) |
編輯 收藏
由于一些原因,最近要復(fù)習(xí)一些東西,所以就把JMS的東西再復(fù)習(xí)一遍,以下便是例子
jms 中最重要的幾個概念destination,ACKNOWLEDGE,subscribe,durable subscribe
destination:topic queque
queue簡單點說就是1:1 一個消息只能由一個consumer去消費,別的consumer來消費的時候已經(jīng)沒了,先到先得
topic簡單點說就是1:N 一個消息可以由多個consumer來消費,誰來消費都有
subscribe,拿topic來說如果當前訂閱不是持久訂閱,只有再訂閱后生產(chǎn)者生產(chǎn)得消息才能被consumer得到,持久訂閱只要沒有被consumer消費,早晚會消費這個消息
一下是幾個例子
queuesend:queque消息產(chǎn)生
queuereceive:queque消息得消費
topicsend :topic消息得產(chǎn)生
topicreceive1:topic消息的非訂閱
topicrecieve2:topic消息的持久訂閱
這個例子實在WEBLOGIC814上測試過的,當然要定義JMSSERVER,FACTORY,DESTINATION。
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);
}
}
posted @
2007-08-15 09:20 小小程序程序員混口飯吃 閱讀(1174) |
評論 (0) |
編輯 收藏
一、rpm包安裝方式步驟:
引用:
1、找到相應(yīng)的軟件包,比如soft.version.rpm,下載到本機某個目錄;
2、打開一個終端,su -成root用戶;
3、cd soft.version.rpm所在的目錄;
4、輸入rpm -ivh soft.version.rpm
二、deb包安裝方式步驟:
引用:
1、找到相應(yīng)的軟件包,比如soft.version.deb,下載到本機某個目錄;
2、打開一個終端,su -成root用戶;
3、cd soft.version.deb所在的目錄;
4、輸入dpkg -i soft.version.deb
三、tar.gz源代碼包安裝方式:
引用:
1、找到相應(yīng)的軟件包,比如soft.tar.gz,下載到本機某個目錄;
2、打開一個終端,su -成root用戶;
3、cd soft.tar.gz所在的目錄;
4、tar -xzvf soft.tar.gz //一般會生成一個soft目錄
5、cd soft
6、./configure
7、make
8、make install
四、tar.bz2源代碼包安裝方式:
引用:
1、找到相應(yīng)的軟件包,比如soft.tar.bz2,下載到本機某個目錄;
2、打開一個終端,su -成root用戶;
3、cd soft.tar.bz2所在的目錄;
4、tar -xjvf soft.tar.bz2 //一般會生成一個soft目錄
5、cd soft
6、./configure
7、make
8、make install
五、apt方式安裝:
引用:
1、打開一個終端,su -成root用戶;
2、apt-cache search soft 注:soft是你要找的軟件的名稱或相關(guān)信息
3、如果2中找到了軟件soft.version,則用apt-get install soft.version命令安裝軟件 注:只要你可以上網(wǎng),只需要用apt-cache search查找軟件,用apt-get install軟件
六、bin文件安裝:
如果你下載到的軟件名是soft.bin,一般情況下是個可執(zhí)行文件,安裝方法如下:
引用:
1、打開一個終端,su -成root用戶;
2、chmod +x soft.bin
3、./soft.bin //運行這個命令就可以安裝軟件了
七、不需要安裝的軟件:
有了些軟件,比如lumaqq,是不需要安裝的,自帶jre解壓縮后可直接運行。假設(shè)下載的是lumaqq.tar.gz,使用方法如下:
引用:
1、打開一個終端,su -成root用戶;
2、tar -xzvf lumaqq.tar.gz //這一步會生成一個叫LumaQQ的目錄
3、cd LumaQQ
4、chmod +x lumaqq //設(shè)置lumaqq這個程序文件為可運行
5、此時就可以運行l(wèi)umaqq了,用命令./lumaqq即可,但每次運行要輸入全路徑或切換到剛才生成的LumaQQ目錄里
6、為了保證不設(shè)置路徑就可以用,你可以在/bin目錄下建立一個lumaqq的鏈接,用命令ln -s lumaqq /bin/ 即可,以后任何時候打開一個終端輸入lumaqq就可以啟動QQ聊天軟件了
7、如果你要想lumaqq有個菜單項,使用菜單編輯工具,比如Alacarte Menu Editor,找到上面生成的LumaQQ目錄里的lumaqq設(shè)置一個菜單項就可以了,當然你也可以直接到 /usr/share/applications目錄,按照里面其它*.desktop文件的格式生成一個自己的desktop文件即可。
posted @
2007-08-10 09:39 小小程序程序員混口飯吃 閱讀(624) |
評論 (0) |
編輯 收藏
計劃任務(wù)工具 cron 的配置和說明
作者:北南南北
來自:LinuxSir.Org
摘要:Linux操作系統(tǒng)中,計劃任務(wù)通常由cron來承擔,了解或掌握cron,能為我們管理服務(wù)器帶來更多的便利,也能省卻更多的時間。本文也舉了一些簡單明了的例子,為了讓新手上路方便;
目錄
++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++
1、計劃任務(wù)概說;
計劃任務(wù),是任務(wù)在約定的時間執(zhí)行已經(jīng)計劃好的工作,這是表面的意思。在Linux中,我們經(jīng)常用到 crond 服務(wù)器來完成這項工作。cron服務(wù)器可以根據(jù)配置文件約定的時間來執(zhí)行特定的作務(wù)。比如我們可以在配置文件中約定每天早上4點,對httpd 服務(wù)器重新啟動,這就是一個計劃任務(wù);
下面我們先來說說cron;
2、cron;
在Linux系統(tǒng)中,計劃任務(wù)一般是由cron承擔,我們可以把cron設(shè)置為開機時自動啟動。cron啟動后,它會讀取它的所有配置文件(全局性配置文件/etc/crontab,以及每個用戶的計劃任務(wù)配置文件),然后cron會根據(jù)命令和執(zhí)行時間來按時來調(diào)用度工作任務(wù)。
2.1 cron 的安裝和啟動;
在一般情況下,cron都是系統(tǒng)默認安裝的,我們要學(xué)會查看軟件包是否已經(jīng)安裝;
2.1.1 在Redhat 或 Fedora等RPM包管理的系統(tǒng)的安裝;
判斷系統(tǒng)是否已經(jīng)安裝cron相關(guān)的包
Fedora 5.0 系統(tǒng)的情況;
其它版本的Fedora及Redhat的系統(tǒng)和這相似;
[root@localhost ~]# rpm -qa |grep cron
vixie-cron-4.1-54.FC5
anacron-2.3-36.1
crontabs-1.10-7.1
其中vixie-cron軟件包是cron的主程序,您可以通過下面的命令來了解它,其它軟件包同理;
[root@localhost beinan]# rpm -ql vixie-cron
crontabs 軟件包是用來安裝、卸裝、或列舉用來驅(qū)動 cron 守護進程的表格的程序。cron 守護進程檢查 crontab 文件來查看某個指定命令被調(diào)度執(zhí)行的時間。如果命令已經(jīng)調(diào)度,守護進程就會執(zhí)行它們。了解crontabs軟件包都安裝了些什么,應(yīng)該用下面的命令;
[root@localhost beinan]# rpm -ql crontabs
如果沒有安裝,可以從光盤中找出文件名帶有cron字樣的軟件包來安裝。
[root@localhost ~]# rpm -ivh vixie-cron-4.1-54.FC5*
[root@localhost ~]# rpm -ivh crontabs*
也可以用yum 來在線安裝;
[root@localhost ~]# yum install vixie-cron
[root@localhost ~]# yum install crontabs
2.1.2 在Slackware系統(tǒng)中的安裝;
在Slackware中cron軟件包是 dcron,您可以在光盤中找出來安裝它;
查看是否已經(jīng)安裝了dcron軟件包,您可以這樣查看。在這里能列出軟件包詳細的安裝情況;
[root@localhost ~]# more /var/adm/packages/dcron*
如果沒有安裝,請用下面的命令來安裝。在第一張安裝盤中找出dcron軟件包;
[root@localhost ~]# installpkg dcron*.tgz
2.1.3 cron 的開啟、停止、重新啟動方法;
cron配置文件被修改后,想讓新文件生效,必須重新crond服務(wù)器,有兩種方法可供選擇;
第一種 在Fedora或Redhat 等以RPM包管理的系統(tǒng)中;
[root@localhost ~]# /etc/init.d/crond start
[root@localhost ~]# /etc/init.d/crond stop
[root@localhost ~]# /etc/init.d/crond restart
如果想在Fedora 和 Redhat 或以這些發(fā)行版為基礎(chǔ)克隆的發(fā)行版,如果想自動開機運行,請用下面的辦法;
[root@localhost ~]# chkconfig --levels 35 crond on
第二種:通用
[root@localhost ~]# pgrep crond 注:判斷crond 是否在運行;
[root@localhost ~]# pkill crond 注:殺掉正在運行中的crond;
[root@localhost ~]# pgrep crond 注:查看是否被殺掉了;
[root@localhost ~]# /usr/sbin/crond 注:運行crond;
2.2 cron 配置文件;
cron 是一個服務(wù)器程序,我們都知道Linux的服務(wù)器的配置,大多是通過配置文件來完成的,cron自然也不例外,在Redhat/Fedora 等系統(tǒng)中它的全局性配置文件是/etc/crontab;在Slackware系統(tǒng)中,全局性文件是/var/spool/cron/crontabs/root 。每個用戶也有自己的cron配置文件,我們可以通過crontab -e 來編輯它;
2.2.1 全局性配置文件;
下面是一個全局性的配置文件例子,以Fedora Core 5為例;
[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權(quán)限來更改,一般是通過crontab -e 來修改。但有時也并不一定是這樣的,比如Fedora Core 5 如果通過crontab -e 修改的是root用戶的cron 配置文件。所以我們要在Fedora Core 5中修改全局性配置文件可以用vi 編輯器來修改。vi的用法請參考:《文件編輯器 vi》
在全局性配置文件中,定義了可執(zhí)行命令的路徑環(huán)境變量,所用SHELL類型的定義等,這些大多不用修改;我們經(jīng)常添加的是計劃任務(wù)或修改任務(wù)執(zhí)行的時間等;
在全局性配置文件中,我們發(fā)現(xiàn)有類似這些行;
1 * * * * root run-parts /etc/cron.hourly 注:表示每個小時的第一分鐘,開始執(zhí)行/etc/hourly目錄下的可執(zhí)行程序或腳本;
2 4 * * * root run-parts /etc/cron.daily 注:表示每天的4點2分,開始執(zhí)行/etc/cron.daily目錄下的可執(zhí)行程序或腳本;
22 4 * * 7 root run-parts /etc/cron.weekly 注:每年第7個周4點我22分,開始執(zhí)行 /etc/cron.weekly目錄下的可執(zhí)行程序或腳本;
42 4 1 * * root run-parts /etc/cron.monthly 注:每月第1天的4點42分,開始執(zhí)行/etc/cron.monthly目錄下的可執(zhí)行程序或腳本;
這些行是用來在同一時間批量執(zhí)行任務(wù)的,我們在以后的例子中獨立出來解說,在這里只是讓大家心中有數(shù);
2.2.2 cron 配置計劃任務(wù)的書寫格式
分鐘 小時 日 月 周 [用戶名] 命令
說明:
第一段應(yīng)該定義的是:分鐘,表示每個小時的第幾分鐘來執(zhí)行。范圍是從0-59
第二段應(yīng)該定義的是:小時,表示從第幾個小時來執(zhí)行,范圍是從0-23
第三段應(yīng)該定義的是:日期,表示從每個月的第幾天執(zhí)行,范圍從1-31
第四段應(yīng)該定義的是:月,表示每年的第幾個月來執(zhí)行,范圍從1-12
第五段應(yīng)該定義的是:周,表示每周的第幾天執(zhí)行,范圍從0-6,其中 0表示星期日。
每六段應(yīng)該定義的是:用戶名,也就是執(zhí)行程序要通過哪個用戶來執(zhí)行,這個一般可以省略;
第七段應(yīng)該定義的是:執(zhí)行的命令和參數(shù)。
注:其中用戶名可是省略,用戶名定義的是程序用哪個用戶來執(zhí)行,比如mysql服務(wù)器,我們可以定義成以mysql用戶來啟動、停止、重新啟動,這時要寫上用戶名;不過對于cron來說意義不是太大,因為每個用戶都有自己的cron配置文件。有些程序的啟動必須用到root用戶,這時我們就可以修改root用戶的cron配置文件就行了。在每個用戶的配置文件中,不必指定用戶名。
我們可以把計劃任務(wù)寫在全局性配置文件中,如果您想把一個計劃放入全局性配置文件中,就得改發(fā)行版所對應(yīng)的cron全局配置文件,比如Fedora 5的全局性配置文件是/etc/crontab文件;
每個用戶也能定義自己的cron配置文件,用crontab -e 命令來定義;
舉一例:讓機器在每天8點30分重新啟動;
關(guān)于時間格式中有7個字段。我們可以直接更改或者添加,當然這是系統(tǒng)任務(wù)調(diào)用。舉個例子,比如我在每天的早上8點30分重新啟動機器,就可以在
/etc/crontab中加入下面的兩句,第一句就是注釋了。以#號開始,后面寫一個自己能知道這是什么任務(wù)的備注;
# reboot OS
30 8 * * * root /sbin/reboot
第一段應(yīng)該定義的是:分鐘,表示每個小時的第幾分鐘來執(zhí)行。范圍是從0-59
第二段應(yīng)該定義的是:小時,表示從第幾個小時來執(zhí)行,范圍是從0-23
第三段應(yīng)該定義的是:日期,表示從每個月的第幾天執(zhí)行,范圍從1-31
第四段應(yīng)該定義的是:月,表示每年的第幾個月來執(zhí)行,范圍從1-12
第五段應(yīng)該定義的是:周,表示每周的第幾天執(zhí)行,范圍從0-6,其中 0表示星期日。
每六段應(yīng)該定義的是:用戶名,也就是執(zhí)行程序要通過哪個用戶來執(zhí)行,這個一般可以省略;
第七段應(yīng)該定義的是:執(zhí)行的命令和參數(shù)。
對比上面的例子就知道,30是不是分鐘??8是不是小時?如果有*代表的地方,表示全部,也就是說,每個月,每天,每星期都要執(zhí)行。root 表示用root用戶執(zhí)行,命令是/sbin/reboot ,也就是說,系統(tǒng)在每天 8點30分重新啟動;
我們可以把每天8點30分重新啟動的計劃任務(wù)寫入cron全局性配置文件中,也可以定義在root用戶自己的cron配置文件中。如果定義在root自己的配置文件,請用root身份來執(zhí)行 crontab -e 來修改配置文件;crontab -e 進入修改配置文件的過程,其實和vi的用法一樣,請參看vi 的用法:《文件編輯器 vi》
讓配置文件生效:如果讓配置文件生效,還得重新啟動cron,切記,既然每個用戶下的cron配置文件修改后。也要重新啟動cron服務(wù)器。
在Fedora 和Redhat中,我們應(yīng)該用;
[root@localhost ~]# /etc/init.d/crond restart
如果讓crond 在開機時運行,應(yīng)該改變其運行級別;
[root@localhost ~]# chkconfig --levels 35 crond on
在Slackware中,如果開機自動運行;
查看/etc/rc.d/rc.M文件是否有如的行,如果沒有就加上,大多是有的;
# Start crond (Dillon's crond):
if [ -x /usr/sbin/crond ]; then
/usr/sbin/crond -l10 >>/var/log/cron 2>&1
</cdoe>
<b>
如果想讓立即讓cron重啟生效,也可以用下面的辦法;
</b>
<code>
[root@localhost ~]# pgrep crond 注:查看crond服務(wù)器是否運行;
2022
[root@localhost ~]# pkill crond 注:殺死crond;
[root@localhost ~]# pgrep crond 注:查看crond是否退出;
[root@localhost ~]# /usr/sbin/crond 注:啟動crond;
[root@localhost ~]# pgrep crond 注:查看crond 是否已經(jīng)運行得起來了;
3883
2.2.3 關(guān)于同一時間,同時執(zhí)行多個任務(wù)的定義方法;
我們在前面已經(jīng)說過,在全局性配置文件中,有類似如下的段落;
1 * * * * root run-parts /etc/cron.hourly 注:表示每個小時的第一分鐘,開始執(zhí)行/etc/hourly目錄下的可執(zhí)行程序或腳本;
2 4 * * * root run-parts /etc/cron.daily 注:表示每天的4點2分,開始執(zhí)行/etc/cron.daily目錄下的可執(zhí)行程序或腳本;
22 4 * * 7 root run-parts /etc/cron.weekly 注:每年第7個周4點我22分,開始執(zhí)行 /etc/cron.weekly目錄下的可執(zhí)行程序或腳本;
42 4 1 * * root run-parts /etc/cron.monthly 注:每月第1天的4點42分,開始執(zhí)行/etc/cron.monthly目錄下的可執(zhí)行程序或腳本;
舉例來說,我想在每天5點10分來重新啟動httpd 服務(wù)器,與此同時,我們也可以同時下載一個ISO文件。如果我們按書寫計劃任務(wù)的規(guī)則一條一條的來書寫,并添加到全局是有點麻煩。不如寫一個腳本放在/etc/crond.daily目錄中。然后把其權(quán)限設(shè)置為755 (關(guān)于權(quán)限的設(shè)置,請參考:《Linux 文件和目錄的屬性》)。
當然我們得改一改上面的 帶有/etc/cron.daily那行,改為如下;
10 5 * * * root run-parts /etc/cron.daily
</cdoe>
然后我們到/etc/crond.daily目錄中創(chuàng)建兩個文件,一個是用來重啟httpd服務(wù)器的,如下;
<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
如果我想在每天5點20分下載FC5的鏡像,可以再創(chuàng)建一個文件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
然后我們重新啟動一下crond就行了;
[root@localhost cron.daily]# pkill crond
[root@localhost cron.daily]# prep crond
[root@localhost cron.daily]# crond&
注意:我只是想說明一下,在同一時間 執(zhí)行多個計劃任務(wù)的簡單用法,并不是有意教給您每天早上都下載FC5的映像。我舉這個例子是為了初學(xué)者了解這個功能。如果您有好多的任務(wù)在某一時刻執(zhí)行,那就自己寫腳本文件。放在/etc目錄下的cron.hourly 、cron.daily 、cron.weekly 、cron.monthly 目錄中。凡是放進這些目錄的可執(zhí)行腳本,都能在約定的時間內(nèi)準確執(zhí)行。每個目錄有每個目錄的用途;
2.2.4 對于用戶自身的cron 配置文件的說明;
每個用戶都有自己的cron配置文件,通過crontab -e 就可以編輯,一般的情況下,在Fedora和Redhat的發(fā)行版,我們編輯好用戶的cron配置文件保存退出后,系統(tǒng)會自動就存放于/var/spool/cron/目錄中,文件以用戶名命名。在Slackware中是位于/var/spool/cron/crontabs/目錄中。其它的發(fā)行版都差不多,有點類似。自己找找吧;查看用戶的計劃任務(wù)是crontab -l
crontab -e 注:編輯用戶的cron配置文件;
crontab -l 注:查看用戶的計劃任務(wù);
比如我用beinan用戶來運行crontab -e ;
[beinan@localhost ~]$ id 注:判斷所用用戶身份;
uid=500(beinan) gid=500(beinan) groups=500(beinan)
[beinan@localhost ~]$ crontab -e 注:編輯用戶beinan的計劃任務(wù);
我們在里面定義一個任務(wù);
40 20 * * * /usr/bin/wget http://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso
保存退出后,我們用下面的命令來查看beinan用戶的計劃任務(wù);
[beinan@localhost ~]$ crontab -l
40 20 * * * /usr/bin/wget http://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso
配置好后,我們還要重新啟動crond服務(wù)器,每個用戶cron配置文件的改動都得重新啟動crond服務(wù)器;前面已經(jīng)說過了,這里省略;值得注意的是重啟crond服務(wù)器,需要root權(quán)限,您可以用su命令切換到root 用戶,然后再來重啟crond;
在Fedora或Redhat等以RPM包管理的發(fā)行版中;
[beinan@localhost ~]$ su
口令:
[root@localhost beinan]# /etc/init.d/crond restart
停止 crond: [確定]
啟動 crond: [確定]
也可以先殺死crond,再運行crond命令的辦法來啟動;
[root@localhost beinan]# pkill crond
[root@localhost beinan]# pgrep crond
[root@localhost beinan]# /usr/sbin/crond
[root@localhost beinan]# pgrep crond
6664
3、計劃任務(wù)的應(yīng)用范圍;
計劃任務(wù)主要是讓系統(tǒng)自動完成一些工作。比如我們可以讓系統(tǒng)自動在某一時刻清理或備份httpd服務(wù)器的日志,然后重新啟動httpd服務(wù)器,這對網(wǎng)絡(luò)管理員來說是很重要的。也可以讓系統(tǒng)自動清空位于/tmp目錄的垃圾文件。
另外值得一提的是,LinuxSir.Org 有很多子站,每個子站都有RSS,能讓這些站點的RSS相互投遞,也是用cron來完成,比如是在早上4點左右開始執(zhí)行這個任務(wù)。這是一個極為耗費資源的過程,如果不是放在在線人少的時候,基本無法完成,所以只能放在早上進行。作為SIR的管理員,不可能每天早上4點起來點鼠標來完成這些事吧。所以最好的辦法就是通過cron來自動運行,以在服務(wù)器最清閑的時候來完成這項工作;
posted @
2007-07-24 11:14 小小程序程序員混口飯吃 閱讀(946) |
評論 (0) |
編輯 收藏
分辨率設(shè)置高了X起來后花屏,無法通過X界面恢復(fù)回去,只能用普通用戶進來后,su 到root上來找到XORG.CONF 文件
修改/etc/X11/xorg.conf
screen里面的設(shè)置最大的那個去掉就好了,重啟就可以了
posted @
2007-07-24 09:19 小小程序程序員混口飯吃 閱讀(2605) |
評論 (2) |
編輯 收藏
一、注銷,關(guān)機,重啟
注銷系統(tǒng)的logout命令
1,Logout 注銷是登陸的相對操作,登陸系統(tǒng)后,若要離開系統(tǒng),用戶只要直接下達logout命令即可:
[root@localhost root]#logout
Red Hat Linuxrelease 9(Shike)
Kernel 2.4.20.8 on an i686
Login: ← 回到登陸的畫面
2,關(guān)機或重新啟動的shutdown命令
Shutdown命令可以關(guān)閉所有程序,依照用戶的需要,重新啟動或關(guān)機。
參數(shù)說明如下:
? 立即關(guān)機:-h 參數(shù)讓系統(tǒng)立即關(guān)機。范例如下:
[root@localhost root]#shutdown –h now ← 要求系統(tǒng)立即關(guān)機
? 指定關(guān)機時間:time參數(shù)可指定關(guān)機的時間;或設(shè)置多久時間后運行shutdown命令,范例如下:
[root@localhost root]#shutdown now ← 立刻關(guān)機
[root@localhost root]#shutdown +5 ← 5分鐘后關(guān)機
[root@localhost root]#shutdown 10:30 ← 在10:30時關(guān)機
? 關(guān)機后自動重啟:-r 參數(shù)設(shè)置關(guān)機后重新啟動。范例如下:
[root@localhost root]#shutdown -r now ← 立刻關(guān)閉系統(tǒng)并重啟
[root@localhost root]#shutdown -r 23:59 ← 指定在23:59時重啟動
3,重新啟動計算機的reboot命令
顧名思義,reboot命令是用來重新啟動系統(tǒng)的。常用的參數(shù)如下:
? -f 參數(shù):不依正常的程序運行關(guān)機,直接關(guān)閉系統(tǒng)并重新啟動計算機。
? -I 參數(shù):在在重新啟動之前關(guān)閉所有網(wǎng)絡(luò)接口。
雖然reboot命令有個參數(shù)可以使用,但是一般只需要單獨運行reboot命令就可以了
posted @
2007-07-17 13:27 小小程序程序員混口飯吃 閱讀(16105) |
評論 (0) |
編輯 收藏