2008年11月14日星期五
AWSTATS性能优化
之前看过awstats官方的优化建议 awstats benchmark(中文翻译在这里), 除了DNSLookup此参数影响较大外,其他的一些参数优化并不能带来非常明显的性能提升,当然这些也是有必要去做的。
awstats官方给出的建议是当访问量超过 4,000,000/月时,推荐你使用Analog或者Webalizer ,这两款统计程序确实快!但是我们有不得不用awstats的理由。对于某些大的门户网站和公司来说,必然会自己开发一套统计系统进行实时统计,这种做法的好处这里就不多说了,但如果仅仅为了得知每天的IP、UV、PV及页面访问情况等,自己开发的成本无疑是一笔不小的开销。但对于日访问量上千万的站点来说,awstats的龟速实在让人无法忍受。
我们网站的日PV至发帖日为止是4000万左右,至今仍在以50-60%/月的速度在增加,日志解压缩后的大小将近200G, awstats每天自动对日志进行分析,整个统计时间大概是16-17小时之间。服务器配置:Xeon双核 1.6 * 2 ,4G内存 , 147G硬盘。
147G的硬盘当然无法解开100多G的日志文件外加一周内的日志,还不算系统自身所占用的磁盘空间。
所以这里我们用到了zcat , 在chedong的AWStats的千万级日志解决方案这篇文章中曾经提到过。zcat确实是一个好东西,可以不用解压缩对gzip、bz2等压缩文件进行输出,而根本不影响统计速度,甚至有所提高,因为perl在执行大文件操作时性能会受到影响。
要知道,加载一个页面同时也加载了许多图片、js、css等文件,我们假设这些访问记录都是在一个日志文件中,那么图片的记录就占了所有访问记录的80%以上。
那么,我们只需要过滤掉这些信息,统计时间也会降至原有时间的20% !
具体如下:
./awstats.pl -update -config=test -LogFile=”/bin/zcat test.log.gz |grep -v ‘.gif\|.png\|.jpg\|.js\|.css’ |”
这是使用了单独域名的前提下,再就是我们可以将组件单独拿到另外的域名来加载,这样达到了过滤的效果。(使用单独域名在大多数情况下不利于网站前端性能,这里不做讨论,详细请参考此文第八条)
第二步,可以通过修改awstats.pl文件来进行,其中 $LIMITFLUSH 默认值为5000,可以根据服务器自身内存进行增加,我增加到了100000,性能提高很明显。
如果你需要统计多个域名的日志,多核、多CPU的服务器则可以开启多个进程同时在后台进行分析,在shell中加上wait就可等待所有进程执行完后再进行之后的html生成。
2008年11月13日星期四
校内网开放平台宣布支持谷歌Open Social
腾讯科技讯 11月13日消息,校内网宣布,校内网开放平台正式支持Google的Open Social标准,允许开发者在校内网上将Open Social的开发标准用于开发应用插件程序(App)。
这是校内网在开放平台后,采用的第二套开发标准,作为Google的合作方之一,校内网方面表示“开放”是未来的方向,很愿意和任何开放平台合作并促进互联网的“开放”时代到来。
据校内网开放平台负责人介绍,校内网上第一个基于Open Social标准制作的App已经在测试阶段,这款由美国开发团队Rockyou开发的“Super Pet”除了可以在校内网上运行外,还可以在任何已经加入“Open Social”的社区网站,如Google的Orkut、天涯、51、豆瓣等网站上运行。
“从我们开放平台的那天开始,就认定了‘开放’是互联网的将来。”校内网开放平台负责人称:“所谓开放,是整个‘互联网的开放。所以我们很高兴加入Google的Open Social计划,也希望和其他开放了平台的网站一起,共同探讨开放之路。”
据了解,校内网是从今年7月8日开始正式开放平台。此前,媒体普遍认为2008年是互联网的开放年,中国互联网开始出现像校内网、Google中国、淘宝、豆瓣等最早的“开放平台”实践者。
2008年11月12日星期三
linux kill用法 、killall、pkill、xkill
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考
虑应用这些工具。
另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用
这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的
危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程
,我们应该用kill 来杀掉。
1. kill
kill的应用是和ps 或pgrep 命令结合在一起使用的;
kill 的用法:
kill [信号代码] 进程ID
注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;
举例:
[root@localhost ~]# ps auxf |grep httpd
root 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 \_ grep httpd
root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd
apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4835 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4836 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;
我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830
的话,其下的子进程也会跟着死掉;
[root@localhost ~]# kill 4840 注:杀掉4840这个进程;
[root@localhost ~]# ps -auxf |grep httpd 注:查看一下会有什么结果?是不是httpd服务器仍在运行?
[root@localhost ~]# kill 4830 注:杀掉httpd的父进程;
[root@localhost ~]# ps -aux |grep httpd 注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?
对于僵尸进程,可以用kill -9 来强制终止退出;
比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;
[root@localhost ~]# ps aux |grep gaim
beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
root 5036 0.0 0.0 5160 724 pts/3 S+ 13:24 0:00 grep gaim
或 [root@localhost ~]# pgrep -l gaim
5031 gaim
[root@localhost ~]# kill -9 5031
2. killall
killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。
用法:killall 正在运行的程序名
killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;
举例:
[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# killall gaim
3. pkill
pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。
应用方法:
#pkill 正在运行的程序名
举例:
[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# pkill gaim
4. xkill
xkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个
图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;
xkill 调用方法:
[root@localhost ~]# xkill
二.Linux的kill命令与信号控制
信号是用来与守护程序和进程通信的。任何活动任务都是一个进程,而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。一个
程序必须有建在其中的信号处理程序用于捕获和应答信号。在LINUX中的signal 参考指南解释了各种不同信号和这些信号的用途。信号是由“kill”命令
发出的。kill -l命令可以显示一个可用信号列表及其编号。
所有的守护程序和进程都有一个进程ID(PID),例如使用ps命名所显示的内容:
$ ps aux
USER PID %CPU %MEM TTY STAT COMMAND
root 1 0.0 0.1 ? S init [2]
105 7783 0.0 0.2 ? Ss /usr/bin/dbus-daemon --system
hal 7796 0.0 0.7 ? Ss /usr/sbin/hald
postfix 7957 0.0 0.2 ? S qmgr -l -t fifo -u -c
nagios 8371 0.0 0.2 ? SNs /usr/sbin/nagios /etc/nagios/nagios.cfg
这个输出是经过简化的。你在系统中可以看到更多的行和栏目。如果某些进程消耗了你的全部CPU或者内存,你可以在这个输出的%CPU和%MEM列中发现它们
。找到失控的进程的一种更快捷的方法是使用top命令,因为按照默认的设置,使用占用CPU资源最多的进程在最上面显示。我们可以使用一条“yes”命令
来测试一下:
$ yes carla is teh awesum
这个命令将以很高的速度反复显示“carla is teh awesum”,直到你停止它运行。这将使你的CPU使用率达到警戒线。
$ top
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12144 carla 25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole
22236 carla 15 0 2860 468 400 S 4.3 0.1 0:00.97 yes
分析一下这个结果,你会发现一些有趣的事,你会发现,占用CPU最多的程序是konsole虚拟终端程序,而不是“yes”命令,这是因为“yes”命令是在
konsole终端程序中运行的。如果在一个“真正的”控制台(按Ctrl+alt+f2键)中运行同样的命令序列,你将看到“yes”命令被排在第一位。
有许多停止“yes”命令运行的方式。如果你要回到运行它的shell中,按CTRL+c键就可以了。或者你可以在另一个shell中用“kill”命令停止“yes”命
令的运行,Kill命令后面跟PID或者命令名称,如下如示:
$ kill 22236
或者
$ killall yes
按 CTRL+c键发出一个SIGINT(信号2),这个信号是键盘要求取得控制权的中断信号。kill和killall这两个命令按照默认的设置都发出一个 SIGTERM信号
(编号15)。程序中可以设置对SIGTERM信号(15)是捕捉或者忽略,或者以不同的方式解释。因此,如果你的程序对于KILL命令的反应与你预期不同,很可能
是被KILL的目标程序的问题。
终止一个父进程通常也终止了它的子进程。不过,情况并不总是如此。你知道子进程是什么吗?使用ps命令加上-f选项就可以看到,如下所示:
$ ps axf
22371 ? R 2:35 _ konsole [kdeinit]
22372 pts/3 Ss 0:00 | _ /bin/bash
24322 pts/3 S+ 0:00 | | _ yes carla is teh awesum
22381 pts/4 Rs 0:00 | _ /bin/bash
24323 pts/4 R+ 0:00 | | _ ps axf
现在,回到SIGHUP的话题
SIGHUP的发音是“sig-hup”,是signal hangup的缩写,含义是“中止信号”。你如何发送一个SIGHUP信号呢?这里有几种方式:
# kill -HUP [pid]
# killall -HUP [process-name]
# kill -1 [pid]
# killall -1 [process-name]
因此,你可以使用PID或者名称,信号名称或者号码。那么为什么要这样做而不使用/etc/init.d/foo命令重新启动呢?使用它们自己的 init(初始化)文件
来控制服务是优先选择的方式,因为这些文件通常包含健全和错误检查以及额外的功能。使用“kill”命令和信号的主要原因是尽可能明确地终止挂起和
失控的进程,而不必重新启动或者登出。
终止进程
正如你在关于信号的man page中所看到的,有十几种控制进程的方法。下面是一些常用的方法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。
SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
Bash shell的Kil命令l
Bash外壳包含一个内置的kill命令,当执行下面命令:
$ type -all kill
kill is a shell built-in
kill is /bin/kill
命令的结果表明有两个kill命令,一个是BASH的内置命令,另一个是/bin/kill可执行程序。一般来说这两个命令不太可能遇到冲突的情况,不过,如果你
确实遇到了kill命令行为异常时,你可以明确的指定/bin/kill命令。
你一定要进一步查阅下面的资源中列出的参考资源来了解Linux中kill的妙用,因为这是你进入维护Linux系统领域的门票。这些知识能够让你像做外科手
术一样对系统进行维护,而不用在遇到问题时每一次都重新启动系统,就像我们知道的某些蹩脚的操作系统那样。
资源
Linux Cookbook一书的第七章“开始和终止Linux”
bash (1) - GNU Bourne-Again Shell
yes (1) - 在被终止前反复打印字符
signal (7) - 可用信号列表
ps (1) - 报告当前进程的快照
kill (1) - 向一个进程发出信号
killall (1) - 按名字消灭进程
pkill (1) - 根据名字和其它属性查看或者发出进程信号
skill (1) - 发送一个信号或者报告进程状态
xkill (1) - 按照X资源消灭一个客户程序
ps命令
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.
ps [选项]
下面对命令选项进行说明∶
-e显示所有进程.
-f全格式.
-h不显示标题.
-l长格式.
-w宽输出.
a显示终端上的所有进程,包括其他用户的进程.
r只显示正在运行的进程.
x显示没有控制终端的进程.
O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定的多 级排序顺序显示进程列表.对于ps的不同格式都存在着默认的顺序指定.这些默 认顺序可以被用户的指定所覆盖.其中“+”字符是可选的,“-”字符是倒转指 定键的方向.
最常用的三个参数是u、a、x.
ps命令常用用法
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号>
指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u
以用户为主的格式来显示程序状况。
13)ps x
显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
grep命令介绍
◎语法: grep [options]
PATTERN [FILE...]
grep用以在file内文中比对相对应的部分,或是当没有指定档案时,
由标准输入中去比对。 在预设的情况下,grep会将符合样式的那一行列出。
此外,还有两个程式是grep的变化型,egrep及fgrep。
其中egrep就等同於grep -E ,fgrep等同於grep -F 。
◎参数
1. -A NUM,--after-context=NUM
除了列出符合行之外,并且列出後NUM行。
ex: $ grep -A 1 panda file
(从file中搜寻有panda样式的行,并显示该行的後1行)
2. -a或--text
grep原本是搜寻文字档,若拿二进位的档案作为搜寻的目标,
则会显示如下的讯息: Binary file 二进位档名 matches 然後结束。
若加上-a参数则可将二进位档案视为文字档案搜寻,
相当於--binary-files=text这个参数。
ex: (从二进位档案mv中去搜寻panda样式)
(错误!!!)
$ grep panda mv
Binary file mv matches
(这表示此档案有match之处,详见--binary-files=TYPE )
$
(正确!!!)
$ grep -a panda mv
3. -B NUM,--before-context=NUM
与 -A NUM 相对,但这此参数是显示除符合行之外
并显示在它之前的NUM行。
ex: (从file中搜寻有panda样式的行,并显示该行的前1行)
$ grep -B 1 panda file
4. -C [NUM], -NUM, --context[=NUM]
列出符合行之外并列出上下各NUM行,预设值是2。
ex: (列出file中除包含panda样式的行外并列出其上下2行)
(若要改变预设值,直接改变NUM即可)
$ grep -C[NUM] panda file
5. -b, --byte-offset
列出样式之前的内文总共有多少byte ..
ex: $ grep -b panda file
显示结果类似於:
0:panda
66:pandahuang
123:panda03
6. --binary-files=TYPE
此参数TYPE预设为binary(二进位),若以普通方式搜寻,只有2种结果:
1.若有符合的地方:显示Binary file 二进位档名 matches
2.若没有符合的地方:什麽都没有显示。
若TYPE为without-match,遇到此参数,
grep会认为此二进位档案没有包含任何搜寻样式,与-I 参数相同。
若TPYE为text, grep会将此二进位档视为text档案,与-a 参数相同。
Warning: --binary-files=text 若输出为终端机,可能会产生一些不必要的输出。
7. -c, --count
不显示符合样式行,只显示符合的总行数。
若再加上-v,--invert-match,参数显示不符合的总行数。
8. -d ACTION, --directories=ACTION
若输入的档案是一个资料夹,使用ACTION去处理这个资料夹。
预设ACTION是read(读取),也就是说此资料夹会被视为一般的档案;
若ACTION是skip(略过),资料夹会被grep略过:
若ACTION是recurse(递),grep会去读取资料夹下所有的档案,
此相当於-r 参数。
9. -E, --extended-regexp
采用规则表示式去解释样式。
10. -e PATTERN, --regexp=PATTERN
把样式做为一个partern,通常用在避免partern用-开始。
11. -f FILE, --file=FILE
事先将要搜寻的样式写入到一个档案,一行一个样式。
然後采用档案搜寻。
空的档案表示没有要搜寻的样式,因此也就不会有任何符合。
ex: (newfile为搜寻样式档)
$grep -f newfile file
12. -G, --basic-regexp
将样式视为基本的规则表示式解释。(此为预设)
13. -H, --with-filename
在每个符合样式行前加上符合的档案名称,若有路径会显示路径。
ex: (在file与testfile中搜寻panda样式)
$grep -H panda file ./testfile
file:panda
./testfile:panda
$
14. -h, --no-filename
与-H参数相类似,但在输出时不显示路径。
15. --help
产生简短的help讯息。
16. -I
grep会强制认为此二进位档案没有包含任何搜寻样式,
与--binary-files=without-match参数相同。
ex: $ grep -I panda mv
17. -i, --ignore-case
忽略大小写,包含要搜寻的样式及被搜寻的档案。
ex: $ grep -i panda mv
18. -L, --files-without-match
不显示平常一般的输出结果,反而显示出没有符合的档案名称。
19. -l, --files-with-matches
不显示平常一般的输出结果,只显示符合的档案名称。
20. --mmap
如果可能,使用mmap系统呼叫去读取输入,而不是预设的read系统呼叫。
在某些状况,--mmap 能产生较好的效能。 然而,--mmap
如果运作中档案缩短,或I/O 错误发生时,
可能造成未定义的行为(包含core dump),。
21. -n, --line-number
在显示行前,标上行号。
ex: $ grep -n panda file
显示结果相似於下:
行号:符合行的内容
22. -q, --quiet, --silent
不显示任何的一般输出。请参阅-s或--no-messages
23. -r, --recursive
递地,读取每个资料夹下的所有档案,此相当於 -d recsuse 参数。
24. -s, --no-messages
不显示关於不存在或无法读取的错误讯息。
小: 不像GNU grep,传统的grep不符合POSIX.2协定,
因为缺乏-q参数,且他的-s 参数表现像GNU grep的 -q 参数。
Shell Script倾向将传统的grep移植,避开-q及-s参数,
且将输出限制到/dev/null。
POSIX: 定义UNIX及UNIX-like系统需要提供的功能。
25. -V, --version
显示出grep的版本号到标准错误。
当您在回报有关grep的bugs时,grep版本号是必须要包含在内的。
26. -v, --invert-match
显示除搜寻样式行之外的全部。
27. -w, --word-regexp
将搜寻样式视为一个字去搜寻,完全符合该"字"的行才会被列出。
28. -x, --line-regexp
将搜寻样式视为一行去搜寻,完全符合该"行"的行才会被列出。
2008年11月11日星期二
UNIX命令-后台运行命令
后台运行某个命令
后台运行某个命令或SHELL,如
find / -type f -name "crontab" 2> temp | xagrs ll &
若-type d 则会列出crontab文件夹内的文件
若要在服务器上一直运行某个命令或SHELL,则形式为 nohup a.sh &
Linux系统下运行命令时CTRL+Z的作用
命令运行时使用CTRL+Z,强制当前进程转为后台,并使之停止。
1. 使进程恢复运行(后台)
(1)使用命令bg
Example:
zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv01
*这里使用CTRL+Z,此时serv01是停止状态*
[1]+ Stopped ./tcpserv01
zuii@zuii-desktop:~/unp/tcpcliserv$ bg
[1]+ ./tcpserv01 & *此时serv01运行在后台*
zuii@zuii-desktop:~/unp/tcpcliserv$
(2)如果用CTRL+Z停止了几个程序呢?
Example:
zuii@zuii-desktop:~/unp/tcpcliserv$ jobs
[1]- Running ./tcpserv01 &
[2]+ Stopped ./tcpcli01 127.0.0.1
zuii@zuii-desktop:~/unp/tcpcliserv$ bg %1
bash: bg:任务 1 已转入后台 *后台运行*
2. 使进程恢复至前台运行
Example:
zuii@zuii-desktop:~/unp/tcpcliserv$ ./tcpserv04
[1]+ Stopped ./tcpserv04
zuii@zuii-desktop:~/unp/tcpcliserv$ fg
。/tcpserv04
总结:
(1) CTRL+Z停止进程并放入后台
(2) jobs 显示当前暂停的进程
(3) bg %N 使第N个任务在后台运行(%前有空格)
(4) fg %N 使第N个任务在前台运行
默认bg,fg不带%N时表示对最后一个进程操作!
df 命令 linux磁盘管理命令
功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df [选项]
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。
该命令各个选项的含义如下:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k 以k字节为单位显示。
-i 显示i节点信息,而不是磁盘块。
-t 显示各指定类型的文件系统的磁盘空间使用情况。
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T 显示文件系统类型。
例1:列出各文件系统的磁盘空间使用情况。
$ df
Filesystem 1 K-blocks Used Available Use% Mounted on
/dev/hda2 1361587 1246406 44823 97% /
df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3,4
列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供
系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,
即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的安装点。
例2:列出各文件系统的i节点使用情况。
$ df -ia
Filesystem Inodes IUsed IFree Iused% Mounted on
/dev/ hda2 352256 75043 277213 21% /
none 0 0 0 0% /proc
localhost:(pid221) 0 0 0 0% /net
例3:列出文件系统的类型。
$ df -T
Filesystem Type 1K-blocks Used Available use% Mounted on
/dev/hda2 ext2 1361587 1246405 44824 97% /
本例中的文件系统是ext2类型的。
nohup命令详解
Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也
会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就
使用nohup:
nohup /root/test.php &
提示:
[~]$ appending output to nohup.out
嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。
附:nohup命令参考
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg ... ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中
的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定
向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指
定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
nohup命令及其输出文件
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之
后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。
该命令的一般形式为:nohup command &
使用nohup命令提交作业
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs 查看任务。
使用 fg %n 关闭。
另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。
bg 命令
如果指定的作业已经在后台运行,bg 命令不起作用并成功退出。
如果未提供 JobID 参数,bg 命令会使用最近暂挂的作业。
使用 bg 命令将作业放入后台,使该作业的进程标识在当前 shell 环境中被知晓。
bg 命令输出显示作业号和与该作业相关的命令。作业号可与 wait、fg
和 kill 命令一起使用,
只要在作业号前加上 %(百分号)前缀。例如:kill %3。
使用 Ctrl-Z 按键顺序就可以暂挂作业。使用 bg 命令就可在后台重新启动该作业。
当作业无需终端输入且作业输出被重定向至非终端文件时,这么做是有效的。
如果后台作业具有终端输出,可输入以下命令强制停止该作业:
stty tostop
输入以下命令可停止后台作业:
kill -s stop JobID
/usr/bin/bg 命令在自己的命令执行环境中操作时无效,因为该环境没有可处理的暂挂作业。如同以下示例所示:
Command | xargs bg
每个 /usr/bin/bg 命令在不同环境中运行并且无法共享父 shell 的作业理解。
由于此原因,bg 命令作为 Korn Shell 或 POSIX shell(经常是内置的)实行。
tail 命令
从指定点开始将文件写到标准输出。
语法
标准语法
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
要以逆序显示行
tail [ -r ] [ -n Number ] [ File ]
描述
tail 命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。 Number 变量指定将多少单元写入标准输出。
Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),
则从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件。
Number 变量用于确定计数的起点的单元类型由 -b、-c、-k、-m 以及 -n 标志确定。如果没有指定其中的任何一个标志,那么 tail 命令就会读取指定文
件的最后十行,并将其写到标准输出。这与在命令行输入 -n 10 是相同的。
-m 标志在单字节和双字节字符环境中提供了一致的结果。当输入是包含多字节字符的文本文件时应谨慎使用 -c 标志,因为产生的输出可能不从字符边界
开始。
标志
-b Number 从 Number 变量表示的 512 字节块位置开始读取指定文件。
-c Number 从 Number 变量表示的字节位置开始读取指定文件。
-f 如果输入文件是常规文件或如果 File 参数指定 FIFO(先进先出),那么 tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续
从输入文件读取和复制额外的单元(当这些单元可用时)。如果没有指定 File 参数,并且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监
视另一个进程正在写入的文件的增长。
-k Number 从 Number 变量表示的 1KB 块位置开始读取指定文件。
-m Number 从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。
-n Number 从 Number 变量表示的行位置开始读取指定文件。
-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式打印整个文件。如果文件大于 20,480 字节,那么 -r 标志只显示最后的
20,480 字节。
-r 标志只有与 -n 标志一起时才有效。否则,就会将其忽略。
退出状态
该命令返回下列的退出值:
0 成功完成。
>0 出现错误。
示例
1. 要显示 notes 文件的最后十行,输入:
tail notes
2. 要指定从 notes 文件末尾开始读取的行数,输入:
tail -n 20 notes
3. 要从第 200 字节开始,每次显示一页 notes 文件,输入:
tail -c +200 notes | pg
4. 要跟踪文件的增长,输入:
tail -f accounts
这显示 accounts 文件的最后十行。tail 命令继续显示添加到 accounts 文件中的行。显示会一直继续,直到您按下 Ctrl-C 按键顺序来停止。
文件
/usr/bin/tail 包含 tail 命令。
linux rm命令详解
。对于链接文件,只是断开了链接,原文件保持不变。\r
rm命令的一般形式为:\r
rm [选项] 文件…
如果没有使用- r选项,则rm不会删除目录。
该命令的各选项含义如下:\r
- f 忽略不存在的文件,从不给出提示。
- r 指示rm将参数中列出的全部目录和子目录均递归地删除。\r
- i 进行交互式删除。
使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。了防止这种情况的发生,可以使用i选项来逐个确认要删除的文件。如果用户输入y,文件
将被删除。如果输入任何其他东西,文件则不会删除。
linux下常用的关机/重启命令shutdown、halt、reboot、init
本文的介绍,希望你可以更加灵活的运用各种关机命令。
1. shutdown
shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进
程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。而在系统关机前使用shutdown命令﹐系统
管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的﹐还可能
重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件
〔mail〕和新闻〔news〕的程序则可以正常地离开等等。
shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕
系统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。要想了解在停机〔halt〕或者
重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
shutdown 参数说明:
[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。
[-r] 重启计算器。
[-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。
[-h] 关机后关闭电源〔halt〕。
[-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。
[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会
送到每位使用者。
[-f] 在重启计算器〔reboot〕时忽略fsck。
[-F] 在重启计算器〔reboot〕时强迫fsck。
[-time] 设定关机〔shutdown〕前的时间。
2.halt----最简单的关机命令
其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。
参数说明:
[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。
[-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。
[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。
[-f] 没有调用shutdown而强制关机或重启。
[-i] 关机〔或重启〕前﹐关掉所有的网络接口。
[-p] 该选项为缺省选项。就是关机时调用poweroff。
3.reboot
reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它的参数与halt相差不多。
4.init
init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8
个运行级别(runlevel),init 0为关机﹐init 1为重启。关于init可以长篇大论﹐这里就不再叙述。另外还有telinit命令可以改变init的运行级别﹐比如
﹐telinit -iS可使系统进入单用户模式﹐并且得不到使用shutdown时的信息和等待时间。
linux下man命令详解
man -f man 显示man程序的所有文档
在man中查询
apropos keywords
man -k keywords
重建man库
makewhatis
查询man文档位置
whereis man 查询man的文档位置
查看当前man的文档目录
manpath
打印man文档
man -t finger | lpr 打印
lpstat -p -d 查看打印机状态
用浏览器打开
man -Hfirefox bash
将man的结果保存在文件内
man bash | col -b > bash.txt
col是用来对文本进行转换的命令,这里是去掉所有的退格符号
名称
man-显示线上求助手册(manualpage)manpath-决定线上手册的搜寻路径
摘要
man[-acdfhkKtwW][-msystem][-pstring][-Cconfig_file][-Mpath][-Ppager][-Ssection_list][section]name...
描述
man 是用来排版并显示线上求助手册,此版本了解MANPATH与(MAN)PAGER这两个环境变数,所以你可以拥有个人的线上手册,并选择任何程式来显示已排版的
手册。如果指定了section,则man只会显示该手册的特定章节。您也可以利用选项或是环境变数来指定搜寻的次序或是排版之前的处理工具。如果 name包
含了`/'则man会先搜寻所指定的档案,所以您可以man./foo.5或者是man/cd/foo/bar.1.gz。
选项
-Cconfig_file指定设定档man.conf;内定值是/etc/man.conf。(Seeman.conf(5).)
-M
path指定了线上手册的搜寻路径,如果没有指定则使用环境变数MANPATH的设定;如果没有使用MANPATH,则会使用/usr/lib/man.conf内的设定;如果MANPATH
是空字串则表示使用内定值。
-P
pager指定使用何种pager.man会优先使用此选项设定,然后是依环境变数MANPAGER设定,然后是环境变数PAGER;man内定使用/usr/bin/less-is。
-S
section_listman所搜寻的章节列表(以冒号分隔),此选项会覆盖环境变数MANSECT的设定。
-a
man内定在显示第一个找到的手册之后就会停止搜寻,使用此选项会强迫man显示所有符合name的线上手册。
-c
即使有最新的catpage,还是对线上手册重新作排版,本选项在萤幕的行列数改变时或已排版的线上手册损坏时特别有意义。
-d
不要真的显示线上手册,只显示除错讯息。
-D
同时显示线上手册与除错讯息。
-f
功能同whatis。
-h
显示求助讯息然后结束程式。
-k
功能同apropos。
-K
对所有的线上手册搜寻所指定的字串。警告:本功能回应速度可能很慢!如果指定section会对速度有帮助。
-m
system依所指定的system名称而指定另一组的线上手册。
-p
string 指定在nroff或troff之前所执行的处理程式不是所有的安装都会有完整的前处理器。各个前处理器所代表的字母分别为:eqn(e),grap(g),pic
(p),tbl(t),vgrind(v),refer(r).本选项覆盖环境变数MANROFFSEQ的设定。
-t
使用/usr/bin/groff-Tps-mandoc来对线上手册排版,并将结果显示至stdout。/usr/bin/groff-Tps-mandoc的输出结果可能还需要特定的过滤器才能列印(
如bg5ps)。
-w或--path
不要真的显示线上手册,但显示线上手册的位置.如果没有指定引数则显示man所搜寻的目录列表。如果manpath是man的□结,则玬anpath?功能同玬an--
path?。
-W
功能类-w,但每行只印出一个档名,不印出额外的讯息.这在下面的状况特别有用:man-aWman|xargsls-l。
man会试着存下已排版的线上手册,以节省下回排版所需要的时间。传统上,位于DIR/X的手册在排版完成后会存于DIR/catX,但在这里是存
于/var/ctaman/catX。如果系统没有所需要的目录,则不会有任何catpage存档。
Itispossibletomakemansuidtoauserman.Then,ifacatdirectoryhasownermanandmode0755
(onlywritablebyman),andthecatfileshaveownermanandmode0644or0444
(onlywritablebyman,ornotwritableatall),noordinaryusercanchangethecatpagesorputotherfilesinthecatdirectory.Ifmanisnotmadesuid,thenacatdi
rectoryshouldhavemode0777ifallusersshouldbeabletoleavecatpagesthere.
选项-c强迫对线上手册重新作排版。
环境变数
MANPATHMANPATH用来设定man的搜寻路径。
MANROFFSEQ
MANROFFSEQ用来设定在nroff或troff执行前所需要的前处理器。内定在nroff前会先执行tablepreprocessor。
MANSECT
MANSECT决定man搜寻的章节。
MANWIDTH
MANWIDTH用来设定显示的宽度。若无设定,则手册会填满您萤幕的宽度。
MANPAGER
MANPAGER决定了显示线上手册的工具。如果无MANPAGER则使用PAGER,如果两者皆未设定则使用/usr/bin/less-is。
LANGLANG决定了man先搜寻的的子目录的名称所以`LANG=dkman1foo'会使man先搜寻[path]/dk/man1/foo.1,如果找不到该档,man才去寻找
[path]/man1/foo.1,[path]是指预设的搜寻路径。
NLSPATH,LC_MESSAGES,LANG
环境变数NLSPATH与LC_MESSAGES(如果LC_MESSAGE不存在则使用LANG)用来指定讯息的语言种类.(英文讯息是编译时即内定,故不需另外设定.)请注意,man所
呼叫的程式,如col(1)也会使用这些环境变数。
PATHPATH是用来设定man的搜寻线上手册的路径。
SYSTEMSYSTEM用来设定替代的系统名(此为选项-m所使用)。
相关说明
apropos(1),whatis(1),less(1),groff(1)。
rm unix命令
除去(解链)文件或目录。
语法
rm [ -f ] [ -r ] [ -R ] [ -i ] [ -e ] File ...
描述
rm 命令从目录中除去指定的 File 参数的项。如果项为到文件的最后链接,则删除这个文件。如果没有对文件的写许可权且标准输入为终端,提示输入文
件名并询问以确认你想要删除该文件。如果输入 y(即“是”)则删除文件,输入另外的字符则不删除文件。不需要对你想要除去的文件的读或写许可权
。然而,对于包含文件的目录你必须有写许可权。
如果文件是符号链接,则除去链接,但是符号链路引用的文件或目录仍在。如果您有目录的写许可权,则不需要文件的写许可权就能删除符号链路。
如果任一文件(. 点)或 ..(点,点)被指定为 File 参数的基本名部分,rm 命令写诊断信息到标准错误且不再对此类参数执行任何操作。
如果没有指定 -f 标志、且要么 File 参数没有写许可权、标准输入为工作站,要么指定了 -i 标志,rm 命令写提示到标准错误并从标准输入读取一行。
如果没有确认响应,rm 命令不再对当前文件做任何操作并继续处理下一个文件。
如果设置了目录粘滞位而目录不为用户所有,其它用户所有的文件不能被除去。
注: rm 命令支持 -- (破折号,破折号) 参数作为表示标志结束的定界符。
标志
-e 在每一个文件被删除后显示消息。
-f 在除去有写保护的文件前不提示。如果指定的文件不存在,不显示错误消息或返回错误状态。如果 -f 和 -i 标志都被指定,最后指定的标志起
作用。
-i 删除每个文件前提示。但一起使用 -i 和 -r 标志时,rm 命令在删除目录前也提示。如果 -i 和 -f 标志都被指定,最后指定的标志起作用。
-r 当 File 参数为目录时允许循环的删除目录及其内容。本标志等同于 -R 标志。
-R 当 File 参数为目录时允许循环的删除目录及其内容。本标志等同于 -r 标志。
退出状态
命令返回下列出口值:
0 如果没有指定 -f 标志,除去所有指定的目录项;否则,除去所有现有的指定目录项。
>0 有错误发生。
示例
1. 删除文件,输入:
rm myfile
如果有到此文件的别的链接,则文件仍在那个名称下,但是除去了名称 myfile。如果 myfile 是其仅有的链接,则删除文件本身。
2. 要不先接收确认提示而删除文件,输入:
rm -f core
在 rm -f 命令试图除去名为 core 的文件前不发送确认提示。然而,如果 core 文件为写保护并且你不是文件的所有者或你没有 root 权限,显示
错误消息。当 rm -f 命令试图除去不存在的文件时不显示错误消息。
3. 要一个一个的删除文件,输入:
rm -i mydir/*
显示每个文件名后,输入 y 来删除文件,或按下 Enter 键来保留它。
4. 要删除目录树,输入:
rm -ir manual
本命令循环地除去 manual 目录的所有子目录的内容,提示注意每一个文件的除去,然后除去 manual 目录本身,例如:
你: rm -ir manual
系统: rm: Select files in directory manual? Enter y for yes.
你: y
系统: rm: Select files in directory manual/draft1? Enter y for yes.
你: y
系统: rm: Remove manual/draft1?
你: y
系统: rm: Remove manual/draft1/chapter1?
你: y
系统: rm: Remove manual/draft1/chapter2?
你: y
系统: rm: Select files in directory manual/draft2? Enter y for yes.
你: y
系统: rm: Remove manual/draft2?
你: y
系统: rm: Remove manual?
你: y
这里,rm 命令首先询问你是否要搜索manual 目录。由于 manual 目录包含目录,rm 命令接着询问是否允许为删除文件搜索 manual/draft1 中的
文件,然后询问是否想要删除 manual/draft1/chapter1 和 manual/draft1/chapter2 文件。rm 命令接着询问是否允许搜索manual/draft2 目录。然后询
问是否允许删除manual/draft1、manual/draft2和 manual 目录。
如果拒绝许可除去子目录(例如,manual/draft2),rm 命令不除去 manual 目录。那样,你将看见消息:rm: 目录 manual 未清空。
文件
/usr/bin/rm 包含 rm 命令。
Linux系统利用Crontab命令实现定时重启
使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,
cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。
需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上
service crond start
如果还需要在系统启动十加载其他服务,可以继续加上其他服务的启动命令。
比如: service mysqld start
基本用法:
1. crontab -l
列出当前的crontab任务
2. crontab -d
删除当前的crontab任务
3. crontab -e (solaris5.8上面是 crontab -r)
编辑一个crontab任务,ctrl_D结束
4. crontab filename
以filename做为crontab的任务列表文件并载入
crontab file的格式:
crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间
分钟 (0-59)
小时 (0-23)
日期 (1-31)
月份 (1-12)
星期几(0-6,其中 0 代表星期日)
第 6 个字段是一个要在适当时间执行的字符串
例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date (solaris 5.8似乎不支持此种写法)
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运
行的脚本程序中自行设置环境变量(export)
(1)先建一个文件crond.txt如下, 每天早上5点36分重新启动
36 5 * * * reboot
(2)上传到/opt目录
(3)运行命令
crontab /opt/crond.txt
crontab -l
让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。
在Fedora 和Redhat中,我们应该用;
[root@localhost ~]# /etc/init.d/crond restart
如果让crond 在开机时运行,应该改变其运行级别;
[root@localhost ~]# chkconfig ——levels 35 crond on
service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它, cron服务是一个定时执行的服务,可以通过crontab 命
令添加或者编辑需要定时执行的任务
Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成,域之间用空格或Tab分开,其中:
minutes: 分钟域,值的范围是0到59
hours: 小时域,值的范围是0到23
day of month: 日期,值的范围是1到31
month: 月份,值的范围是1到12
day of week: 星期,值的范围是0到6,星期日值为0
command: 所要运行的命令
如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。
如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字 本身)。
如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。
如果日期域和星期域都有值,则这两个域都有效。
编写一个文件,用以启动自动备份进程。
cd /opt
touch reboot.txt
在reboot.txt中添加一下内容:
0 4 * * * reboot
crontab /opt/reboot.txt
用crontab -e编辑定时操作,例如加入下行命令:
用crontab -l命令来查看
注意:需要启动服务(添加在rc.local中)
重启crond任务
/etc/init.d/cron restart (ubuntu下)
第一种 在Fedora或Redhat 等以RPM包管理的系统中;
[root@localhost ~]# /etc/init.d/crond start
[root@localhost ~]# /etc/init.d/crond stop
[root@localhost ~]# /etc/init.d/crond restart
/etc/rc.d/init.d/crond restart
命令简介
crontab-操作每个用户的守护程序和该执行的时间表。
部分参数说明
crontab file [-u user]-用指定的文件替代目前的crontab.
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。
下面是一个例子文件:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点
106* * * date
#每两个小时
0*/2* * * date
#晚上11点到早上8点之间每两个小时,早上部点
0 23-7/2,8* * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4* mon-wed date
#1月份日早上4点
0 4 1 jan* date
范例
lark:~>crontab-1 列出用户目前的crontab.
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
10 6* * * date
0*/2* * * date
0 23-7/2,8 * * * date
lark:~>
Linux下使用Shell命令控制任务(Jobs)执行
ps 列出系统中正在运行的进程
kill 发送信号给一个或多个进程(经常用来杀死一个进程)
jobs 列出属于当前用户的进程
bg 将进程搬到后台运行(Background)
fg 将进程搬到前台运行(Foreground)
将job转移到后台运行
如果你经常在X图形下工作,你可能有这样的经历:通过终端命令运行一个GUI程序,GUI界面出来了,但是你的终端还停留在原地,你不能在shell中继续
执行其他命令了,除非将GUI程序关掉。
为了使程序执行后终端还能继续接受命令,你可以将进程移到后台运行,使用如下命令运行程序: #假设要运行xmms
$xmms &
这样打开xmms后,终端的提示又回来了。现在xmms在后台运行着呢(可以继续工作和听音乐了^_^)
但万一你运行程序时忘记使用“&”了,又不想重新执行(Eclipse启动速度太慢了,我不想重启啊,:))。你可以先使用ctrl+z挂起程序,然后敲入bg命
令,这样程序就在后台继续运行了。
察看jobs
使用jobs或ps命令可以察看正在执行的jobs。(the two have a little diff. have a try ^_^)
kill a job
方法一:
通过jobs命令查看job号(假设为num),然后执行kill %num
方法二:
通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
kill的其他作用
kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,
这是由内核来终止进程,进程不能监听这个信号。
man 命令详解
用途
显示联机手册条目。
语法
man [ [ [ -c ] [ -t ] [ Section ] ] | [ -k | -f ] ] [ -MPath ] [ -r ] Title ...
描述
man 命令提供有关主题的参考信息,例如命令、子例程和文件。man 命令提供由名称指定的对命令的单行描述。man 命令也提供所有命令的信息,这些命
令的描述包含用户指定的关键字集合。
man 命令格式化指定的手册页面集合。如果为 Section 参数指定一个段,那么 man 命令在手册页面的该段中搜索 Title 参数指定的标题。Section 参数
的值可以是 1 到 8 的阿拉伯数字或字母。
Section 字母是:
C 指定命令(包含系统管理命令)。
F 指定文件类型手册页面。
L 指定库函数。
n 指定为新的。
l 指定为局部的。
o 指定为原来的。
p 指定为公用的。
注:
n、l、o 和 p 段说明符对于读取超文本信息库无效,超文本信息库包含操作系统文档。
Section 数字是:
1 表示用户命令和守护进程。
2 表示系统调用和内核服务。
3 表示子例程。
4 表示特殊文件、设备驱动程序和硬件。
5 表示配置文件。
6 表示游戏。
7 表示杂项命令。
8 表示管理命令和守护进程。
注:
超文本信息数据库中的操作系统文档仅分组成三个段:命令手册页面(在段 1 中,相当于段 C)、子例程手册页面(在段 3 中,相当于段 L)和文件手
册页面(在段 4 中,相当于段 F)。当搜索超文本信息时,指定段 1、6、7 或 8 缺省为命令手册页面,段 2 或 3 缺省为子例程手册页面,段 4 或 5
缺省为文件手册页面。
如果 Section 参数省略,则 man 命令搜索所有的手册段。
man 的搜索路径使用一个由 :(冒号)隔开的其中有子例程手册的目录列表。MANPATH 环境变量值用于缺省路径。当读取超文本信息库时,MANPATH 环境
变量无效。
man 命令显示手册页面如下:
1. man 命令搜索 /usr/share/man 目录下的 nroff 目录(man?)。
2. man 命令搜索 /usr/share/man 目录下的格式化版本目录(cat?)。如果格式化版本可用,并且它比 nroff 命令源修改得更晚,则 man 命令显示
格式化版本。否则,手册页面以 nroff 命令格式化和显示。如果用户有许可权,则格式化的手册页面可存储在正确的地方,以便最后一次启用 man 命令
不会再一次格式化页面。
注:
这里没有所给的手册页面的 nroff 源。然而,可以将手册页面的 nroff 源放置到 man 目录中,然后 man 命令能够定位并处理 nroff 源。
3. 如果 man 命令在 /usr/share/man/man 或 /usr/share/man/cat 目录中没有找到手册页面,则 man 命令就从超文本信息库中读取。超文本信息库
驻留在 /usr/share/man/info 目录结构中,它包含操作系统文档。当从超文本数据库中读取时, man 命令并不把任何手册页面放进 /usr/share/man/cat
目录结构中。man 命令从手册页面中删除格式化信息,调整各行使它们适合显示器,使用 PAGER 环境变量中描述的命令显示手册页面。
当访问 HTML 数据库时,man 在查找其它 LPP 库之前查找操作系统库。在这些库中,它按以下顺序处理信息:
cmds 命令参考
libs 子例程,系统调用
files 文件引用
如果标准输出是个 tty,则 man 命令使用带有 -s 和 -v 标志的 more 命令输送它的输出。-s 标志消除多个空行并且在屏幕上每显示一页就停止。-v 标
志禁止在屏幕上显示非打印字符。要继续滚动,按空格键。在输出停止后要继续再滚动 11 行,按 Ctrl-D 按键顺序。
PAGER 环境变量可以设置到任何所需的页面调度程序上。缺省值是 more 命令。要更改缺省的页面调度程序,请输入:
PAGER=Somepager
export PAGER
例如,如果以相反或部分换行方式来定制手册页面,PAGER 环境变量可以设置到 /usr/bin/pg,以便换行不会像控制字符那样打印出来。这个过程对手册
页面并非是必要的。
当 man 命令使用超文本数据库时,它能够检索几个物件。例如,man open 显示几个物件。使用 SIGINT(Ctrl-C)完全退出 man 命令。另一方面,man
open close 也显示几个物件,但使用 SIGINT(Ctrl-C)会使 man 显示 close 命令信息而不是退出。再次使用 SIGINT(Ctrl-C)完全退出 man 命令。
当指定名称中包含 $(美元符号)的“网络计算系统”库例程之一时,应在 $ 前输入一个 \ (反斜杠)。
标志
-c 显示使用 cat 命令的手册信息。
-f 显示在关键字数据库中仅与作为最终参数给定的命令名相关的项。可以输入多个命令名,中间用空格隔开。使用这个标志仅搜索命令物件。要使
用 -f 标志,root 用户必须以前已输入 catman -w 以建立 /usr/share/man/whatis 文件。
-k 显示关键字数据库中包含与作为最终参数给定的字符匹配的标题的字符串的每一行。可以输入多个标题,中间用空格隔开。要使用 -k 标志,
root 用户必须以前已输入 catman -w 以建立 /usr/share/man/whatis 文件。
-MPath 更改 man 命令搜索手册信息的标准位置。 man 命令使用的搜索路径是一个由 :(冒号)隔开的包含手册子目录的目录列表。 MANPATH 环境变量
值用作缺省路径。
注:
当 man 命令从超文本数据库中读取时,-M 标志无效。
-r 手册信息的远程搜索。如果远程搜索失败(原因是远程机器不可到达,或读取 URL 地址时出现问题,或本地机器上未安装 Java),那么 man 为
请求联机帮助页进行本地搜索。
注:
DOCUMENT_SERVER_MACHINE_NAME 环境变量应设置到用户想要使用的文档搜索服务器机器的名称上。如果“AIX 基本文档”不支持主机的语言环境,那么
man 命令搜索备用语言环境的文档。如果搜索成功,则文档页在转换到本地主机的语言环境后显示。如果备用语言环境未在本地主机上安装,则 man 命令
显示文档页失败。
-t 使用 troff 命令格式化手册信息。如果在超文本信息基中查找到手册页面,则忽略此标志。
退出状态
这条命令返回以下退出值:
0 成功完成。
>0 发生错误。
示例
1. 要显示关于 grep 命令的信息,请输入:
man grep
2. 要显示关于 rpc_$register 库例程的信息,请输入:
man rpc_\$register
3. 要显示包含“mkdir”字符串的 /usr/share/man/whatis 关键字数据库中的所有项,请输入:
man -k mkdir
此输出等同于 apropos 命令。只有在 /usr/share/man/whatis 关键字数据库已存在时,才能从 -k 标志接收输出。
4. 要显示与 nroff 和 troff 命令相关的关键字数据库中的所有项,请输入:
man -f nroff troff
此输出等同于 whatis 命令。只有在 /usr/share/man/whatis 关键字数据库已存在时,才能从 -k 标志接收输出。
5. 要显示 /usr/share/man 或 /usr/share/man/local 路径中的所有与 ftp 命令相关的物件,请输入:
man -M/usr/share/man:/usr/share/man/local ftp
文件
/usr/bin/man 包含 man 命令。
/usr/share/man 标准手册目录结构。
/usr/share/man/cat?/* 包含预格式化的页面的目录。
/usr/share/man/whatis 包含关键字数据库。
/usr/share/man/man?/* 包含 nroff 格式手册页面的目录。
2008年11月10日星期一
国际观点:鼓励未来的程序员
幸亏这些本地居民和便宜的计算机,英国多年来在游戏市场都占据强有力的地位。程序员通过进入杂志的列表开始了解编程,进而一步一步开始写自己的游戏代码。那时候的机器明显是比现在的机器要难用,但却是文档齐全,更具有编程文化——如果你想要使用,你至少需要学习少数命令。
现在,与今年的这篇文章比较一下,这篇文章就显得很压抑。很少人在学习编程,学校在全神贯注地教学生如何使用Word和Excel。难怪很多人都不愿意考虑去试一试OpenOffice!
我现在将近30岁,在9或10岁的时候拥有了我的第一个计算机(Amstrad CPC 6128)。所以我认为我是处于伴随着第一代计算机长大的那一代人的末梢儿。像很多其他人一样,我按照电话本大小的手册书里的指南去编写程序,建立一个地址本应用程序,花费几个小时键入程序,同时调试来自杂志的游戏。
90年代被认为是计算机产业的一个糟糕时期,尽管计算机网络是出现于这个时代。Commodore沉没,Apple也只是死里逃生,在短短几年之内,Windows开始占据桌面统治地位,其它的几乎都消失了。
Windows毋庸置疑在使计算机更易使用方面做出了杰出贡献(其实我不喜欢承认这件事情,我是一个Linux用户),同时还提供了写信,制作电子表格,到后来的网络冲浪等一些了不起的功能。一定程度上来说,它使计算机变成了一个黑匣子,使人们对学习编码不感兴趣。
同时,游戏控制台开始占据更大的游戏市场。一些流派(如RTS即时战略),已经在家庭计算机上占有了很强的地位,而且现在仍然如此。平台游戏如Mario和Sonic游戏渐渐退去舞台。所以,像过去那种为了玩游戏买计算机,然后开始编程的情况已经很少见了。
现在,如果你买一台Windows PC,没有任何方式会鼓励你用它编程序。没有任何种类的指导,也没有BASIC解释器(或者任何其它解释器)。现在的PC杂志似乎没有做任何鼓励人们学习编程的事情,我觉得这有一些悲哀。
拥有一台Windows计算机,在我看来,你实际上应该从它开始对编程产生兴趣,应该知道你对它感兴趣,你可以使用它作为一个编程平台。我的意思是,它并不会鼓励你学习特定的编程语言。据我所知,微软的操作系统到目前为止还不包括任何编程工具。
让人感到受挫的是,他们其实已经有了近乎完美的编程工具,以Visual Studio Express Edition的形式。我希望人们能学习一种开源语言而不是依靠Windows,但我更希望看见人们能首先被鼓励编程。为什么微软的Windows操作系统不能包含至少一种Visual Studio Express Edition IDE(我预期他们大概主张Visual Basic,尽管那不是我的首选),以及一个用户手册(打印或pdf版本)?他们可以在桌面上放置一个链接“开始学习编程!”,让人们在好奇心的驱使下自然而然地去学习。如果人们不喜欢,他们可以删除它,那不是很好。事实上,现在你不得不到微软的网站上去寻找它。他们应该鼓励人们去学习他们的软件,并为之开发更好的应用。
我认为在很多方面,Apple做的更好。通过在OS X的每一个拷贝中包含Xcode IDE,伴随计算机同时提供了一个有力的编程工具。而且,OS X本质上来说是Unix的一种形式,很适合编程用。但是,事实上,Xcode不是预安装的,意味着它不是默认安装的,使得使用性变小,人们可能会出于好奇心而安装它。同时,尽管XCode确实装载了文档,但却没有包含任何“初学者向导”,看起来像是只为那些已经成为程序员的人提供的。他们应该明确地做更多能鼓励人们开始编程的事情。所以,我再一次感觉到像Windows,OS X都是很少的努力来鼓励人们开始学习编程。
另外一个Apple和微软的共同点是,他们过于强调IDE而不是文本编辑器。我曾经短暂地试过使用Visual Studio Express Edition,也试过Xcode,我同意这种观点,就是IDE是你开始编程的最后一个选择。学习一个全新且复杂的应用程序,同时学习编程,对大多数人来说都有些困难,但任何人都会使用基本的文本编辑器。甚至是更复杂的,如Vim(我个人喜欢的)也远比使用大多数IDE容易得多。毫无疑问IDE提供了大量特征供用户体验,但当某人开始他编程第一步时,却是极其不应该选择的。
有一件事情让我喜欢Linux超过OS X和Windows。目前,在某些流行套件如Ubuntu中,你实际上不需要为日常作业而使用终端,现在有一个很强的文化在做这件事情,你可以使用它来解决问题。我认为部分原因是由于主要支持来源于论坛,对某个人来说,很容易就可以给你粘贴一个命令,粘贴到终端,然后告诉你“点击这里,然后这里,然后这里……”。同时,bash shell比Windows的配对产品更有力。总的来说,可能会存在一个学习曲线,使用bash通常是完成一项任务的最快、最方便的方法。从使用 bash,通过编辑文本文件改变设置,然后到编写shell脚本或是学习使用Perl或Python编程并不是很困难的事情。很多套件包含语言的同时也会包含大量文档。同时,Linux中使用的语言几乎是一成不变的,可以使用一个简单的文本编辑器而不是强迫你去学习使用某个IDE,我感觉这让他们更容易理解。
但是,我还是感觉甚至是Linux也可以做跟多鼓励人们学习编程的事情。我不得不想做的最后一件事情是,当人们不想学习编程的时候强制他们去学习。但我认为我们不应该采取更多的措施去鼓励新程序员。可能只是手头/home目录下的一个pdf文件,叫做“学习编程”的就足够了。
最近,我开始学习Python。很快地我就开始喜欢学习它了。它可能比BASIC更强大,但我发现它正如入门容易那样简单。过去我曾学过Perl和 Java,发现学习一个新语言或多或少会有点困难,但Python让我感到很惊讶。所以一个新计算机应该包含一种理想的语言。OS X和大部分Linux套件已经包含了Python。我找不到任何微软的产品不包含它的理由。只需要添加一到两个pdf指南,放在那里。如果处于某种理由他们不想使用Python,我们当然还可以为初学者提供其他好的语言。
还有其他可以让人们对编程产生兴趣的方法吗?我们应该推动哪种语言?我们是否应该鼓励他们使用IDE,或者使用像Vim这样的文本编辑器?欢迎给出你的答案!
130 个 Web 设计工具-高级专业设计者资源
高级专业设计者资源
CSS Superdouche - 净化 CSS 以降低其复杂性
Code Beautifier - CSS 代码格式与优化
CSSFly - 在浏览器中编辑 CSS 和 XHTML
CSS Drive CSS Compressor - CSS 压缩工具
Clean CSS - CSS 净化与优化工具
EM Calculator - 将基于 px 的尺寸转换为 em
CSS Redundancy Checker - 清除未使用 CSS 选择器,检查 CSS 中多余代码
GrayBit - 将彩色网站转换成灰度级以测试其可访问性
ProtoShare - 创建网站模型,从团队获取反馈,创意与建议
Most Sliced - 图片切片服务列表,含评测与用户评分
Inserit - 一个用于 Web 设计师的 CMS 系统
LightCMS - CMS 系统
clickbooq - 网站创建与管理工具
jumpchart - 网站规划程序,可输出干净的 CSS/XHTML
inblogit - 博客工具,可以集成到任何网站
Reflect - 网站设计与托管平台
Carbonmade - 让设计者们在线展示自己的作品
ThemesPress - 将 Template 文件转换成 WordPress 主题
Feng GUI - 这是一个很有趣的工具,它模拟人类在5秒钟内看到一个网页画面时的印象,分析你网页中最容易被人注意的热点位置。
Text Generator - Lorem Ipsum 傀儡文字的替用品
webvanta - 商业网站创建与托管
Tuplix - 直接在网页上更改内容
FolioSnap - 创意设计者用来展示作品的工具
Frontfriend - 供网站设计者使用 CMS 系统,可以创建表单和模板,供最终客户填写
更多阅读
Web 开发工具箱:120个 Web 开发工具(上)
Web 开发工具箱:120个 Web 开发工具(下)
来源:mashable.com 翻译:COMSHARP CMS (锐商企业CMS)官方网站
Web 设计工具箱:130 个 Web 设计工具
初学者资源
YAML Builder - 简单易用的 YAML (Yet Another Multicolumn Layout - 做栏布局)XHTML/CSS 站点布局
Sky CSS Tool - JavaScript CSS 工具
The Box Office - 文字围绕图片的 CSS 格式工具
CSSTXT - 在线 CSS 文字式样生成器
izzyMenu.com - 免费 CSS 菜单
pForm - HTML 表单生成工具
Roxer - 拖放式网站设计工具
Wirenode - 创建移动站点
doodlekit - 在线网站设计及 CMS 系统,含表单生成器,Paypal 构物车,可互换的布局与图片,内置图片库
dotemplate - 可定制的网站模板
templatr - 创建网站模板的在线工具
Agency of Record - 面向创意设计者的网站设计与托管平台。
Typechart - 字样与 CSS 式样
CSS Type Set - 创建个性化 CSS 字体式样
CSSType - 试验各种 Web 安全的排版风格并获得相应 CSS
CSS Builder - 快速生成 CSS
Firdamatic - 不使用 table 设计2或3栏博客版面
PsycHo - 博客模板设计
folionow - 简单易用用便宜的网站设计工具
CSStxt - 自定义 CSS 文字式样
Viviti - 易用的网站设计工具
ComfyPage - 简单易用的免费网站设计工具,可定制模板,并添加任意多页面
LetsEat.at - Free website builder and hosting for restaurants that includes customizable menus, daily specials, printable coupons, and more.用于酒店宾馆的免费网站设计工具。包含可定制的菜单,每日特价,优惠券等。
webon - 免费的,不含广告的网站设计工具,可用来设计博客,像册,视频站
infogami - 快速设计网站,含可定制的模板。
edicy - 创建网站,并使用你自己的域名上线
Jimdo - 网站创建工具,集成了各种图片,视频等
Webnode - 免费创建个人或公司网站,拖放式操作,标签,免费托管
iompi - 创建电子商务网站
easysite.com - 网站创建工具,含照片,视频,博客,免费电话支持
myfamily.com - 免费的,不限空间的家庭网站创建
MomentVille - 免费婚礼网站创建工具
SeeYouThen! - 婚礼网站创建工具,含高分辨率照片交换,私人消息,客人资料等
GoHoster - 支持子域名的免费网站创建工具
BlinkWeb - 免费的拖放式网站设计工具,含电子商务选项
Macrocasa - 房地产行业网站创建工具,包含中介消息系统及客户管理系统
Pixie - 免费的,开源网站创建工具,含直观的界面,容易安装部署
Squarespace - 一个强大网站创建工具,含 XHTML 验证,所见即所得编辑器,博客平台。
NicEdit - 跨平台内容编辑器,可以在浏览器中直接编辑网站内容
WordPress Theme Generator - 使用该工具你可以创建完全定制化的 WordPress 主题
高级专业设计者资源