10 程序员必备:Linux日常维护命令

一、服务器硬件配置

1、查看硬盘及分区情况

# fdisk -l

2、查看分区空间使用情况

可以查看各分区大小、已使用、可用、已使用百分比、挂载情况

1)默认单位为K

# df

2)可读性更好的显示,如单位M、G等

# df -h

3、查看内存信息

1)使用free命令

默认单位为K,可通过结合参数-b、-k、-m分别以单位B、K、M进行显示

# free

# free -b

# free -k

# free -m

2)查看/proc/meminfo文件,可以获得比free命令更详细内存信息

# cat /proc/meminfo

4、CPU信息

1)查询CPU基本信息

# more /proc/cpuinfo

# more /proc/cpuinfo w| grep "model name" | sort | uniq

model name : Intel(R) Xeon(R) CPU E7330 @ 2.40GHz

2)查询有多少个CPU(相同physical id为同一个CPU)

# more /proc/cpuinfo | grep "physical id" | sort | uniq

physical id : 0

physical id : 1

3)查询单个CPU核数

# more /proc/cpuinfo | grep "cpu cores" | sort | uniq

cpu cores : 6

4)查询单个CPU线程数(逻辑处理器)

# more /proc/cpuinfo | grep siblings | sort | uniq

siblings : 12

二、系统信息

1、查看系统信息

1)查看内核名称

# uname

相当于

# uname -s

2)查看完整的系统信息,包括内核名称、主机名、内核版本、处理器架构等

# uname -a

2、查看redhat发行版本信息

# more /etc/redhat-release

3、查看主机名

# hostname

# uname -n

hostname对应的配置文件是/etc/sysconfig/network,如果配置文件中HOSTNAME为空、(none)、localhost或localhost.localdomain,就会尝试根据实际IP从/etc/hosts中查找映射的主机名,如果存在则使用该主机名,否则使用原来的HOSTNAME。

三、网络配置

1、查看网络服务的状态、启动、停止或重启网络服务

# service network status|start|stop|restart

2、显示、设置网络设备

1)查看已启用的网络接口信息

# ifconfig

2)查看所有网络接口配置

# ifconfig -a

3)查看eth0网络接口配置

# ifconfig eth0

4)启用eth0网络接口

# ifconfig eth0 up

# ifup eth0

5)关闭eth0网络接口

# ifconfig eth0 down

# ifdown eth0

6)实时(临时)修改eth0的IP地址

# ifconfig eth0 IP地址

7)实时(临时)修改eth0的IP地址、子网掩码

# ifconfig eth0 IP地址 netmask 子网掩码

实时地手动修改一些网络接口参数,可以利用ifconfig来实现,如果是要直接以配置文件,亦即是在 /etc/sysconfig/network-scripts里面的ifcfg-ethx等文件的设置参数来启动的话,那就得要通过ifdown或ifup来实现了。

ifconfig是一个命令。

ifup、ifdown是脚本,它会直接到/etc/sysconfig/network-scripts目录下搜索对应的配置文件,例如ifup eth0,它会找出ifcfg-eth0这个文件的内容,然后加以设置。

不过,由于这两个程序主要是搜索设置文件(ifcfg-ethx)来进行启动与关闭的,所以在使用前请确定ifcfg-ethx是否真的存在于正确的目录内,否则会启动失败。另外,如果以ifconfig eth0来设置或者是修改了网络接口后,就无法再以ifdown eth0的方式来关闭了。因为ifdown会分析比较目前的网络参数与ifcfg-eth0是否相符,不符的话,就会放弃这次操作。因此,使用ifconfig修改完毕后,应该要以ifconfig eth0 down才能够关闭该接口。

3、查看网卡配置文件

网络接口配置文件目录:/etc/sysconfig/network-scripts,其中,ifcfg-eth0是默认的第一个网络接口,如果机器中有多个网络接口,那么名字依此类推ifcfg-eth1、ifcfg-eth2...

# more /etc/sysconfig/network-scripts/ifcfg-eth0

四、系统服务配置

1、查看所有系统服务的运行状态

# service --status-all

2、查看服务状态、启动、停止或重启服务

# service 服务名 status|start|stop|restart

3、查询、更新系统服务的运行级别信息

1)查看系统服务列表,以及每个服务的运行级别

# chkconfig --list

2)添加服务

# chkconfig --add 服务名

3)删除服务

# chkconfig --del 服务名

4)开启、关闭或重置在某运行级别的开启情况

# chkconfig --level 2345 name <on|off|reset>

五、显示网络、进程状态

1、显示网络状态

1)查看监听中的sockets

# netstat -l

2)查看TCP传输协议的连接情况

# netstat -t

3)查看UDP传输协议的连接情况

# netstat -u

4)查看当前连接中的所有socket

# netstat -a

5)显示网络连接状态,显示IP地址而不使用域名

# netstat -n

6)查看监听中的TCP端口

# netstat -tnlp

7)查看监听中的UDP端口

# netstat -unlp

8)分页显示结果

# netstat -anp|more

9)查看端口是否被使用

# netstat -nlp | grep 端口号

2、实时监控CPU、内存、进程等使用情况

# top

输入大写P:按CPU使用率降序排序

输入大写M:按内存使用率降序排序

3、进程管理

1)查看所有进程

# ps -ef

# ps -aux

2)以进程树的格式显示所有进程

# ps -ejH

3)通过grep过滤进程

如查找tomcat进程一般可以这么写

# ps -ef|grep tomcat

4)关闭进程

关闭进程

# kill 进程号

强制关闭进程

# kill -9 进程号

六、磁盘操作

1、cd命令

切换目录

1)切换到指定目录

# cd /var/log

2)切换到当前用户的主/HOME目录

# cd ~

3)切换到上一级目录

# cd ..

4)返回最近访问的目录,这个经常用得到,不需要自己输入目录

# cd -

2、pwd命令

显示当前的工作目录

# pwd

3、ls命令

列出目录内容

1)列出当前目录的文件及子目录

# ls

2)列出指定目录的文件及子目录

# ls dir

3)列出当前目录的文件及子目录,包括隐藏文件

# ls -a

4)列出当前目录的文件及子目录的详细信息

# ls -l

5)列出当前目录的文件及子目录的详细信息,以可读性较好的格式进行显示

# ls -lh

6)按修改时间降序排序

# ls -lt

7)按修改时间升序排序

# ls -lrt

七、文件、目录管理

1、目录管理

1)创建目录

# mkdir dir

2)删除目录

# rm -r dir

删除目录不提示

# rm -rf dir

删除目录下的所有文件与目录

# rm -rf dir/*

3)重命名、移动目录

如果newDir不存在,则oldDir重命名为newDir;如果newDir存在,则将oldDir移动到newDir目录

# mv oldDir newDir

4)复制目录

如果newDir2不存在,则将newDir复制一份为newDir2;如果newDir2已存在,则将newDir复制一份移动到newDir2目录

# cp -r newDir newDir2

2、文件管理

1)创建空文件

# touch file.txt

# > file.txt

2)删除文件

# rm file.txt

删除文件不提示

# rm -f file.txt

3)重命名文件

# mv file.txt file5.txt

4)移动文件

# mv file.txt newDir

移动多个文件或目录到指定目录,将a.txt、b.txt、c.txt、oldDir移动到newDir目录

# mv a.txt b.txt c.txt oldDir/ newDir/

5)复制文件

# cp old.txt new.txt

将newDir目录下的文件与目录复制到targetDir目录

# cp -r newDir/* targetDir/

3、find命令

查找文件或目录

1)寻找当前目录下,所有以file为前缀的文件或子目录

# find -name file\*

2)查找文件并将结果输出到filelist.txt文件中

# find -name file\* -fprint filelist.txt

3)列出目录下最近两天之内有变动的文件

# find /home -mtime 2

4)寻找dir目录中以file为前缀的文件或目录,寻找时最多只往下找1层子目录

# find dir/ -name file\* -maxdepth 2

4、file命令

识别文件或目录的类型

1)查看/home/jsam目录下的文件及目录的类型

# file /home/jsam/*

2)查看指定文件或目录的类型

# file filename

5、du命令

显示文件或目录的大小。

1)显示当前目录下,所有子目录所占用的磁盘空间

# du

2)显示当前目录下,所有子目录所占用的磁盘空间。以bytes、K、M、可读性更高的方式显示大小

# du -b

# du -k

# du -m

# du -h

3)显示当前目录下,所有子目录所占用的磁盘空间。最多只显示2层子目录

# du --max-depth=2

4)显示当前目录下,所有子目录所占用的磁盘空间。显示目录大小时,并不包含其子目录的大小,即目录的大小排除了子目录的大小。

# du -S

5)显示当前目录所占用的磁盘空间

# du -s

# du -sh

6)显示当前目录下,所有子目录及文件各自占用的磁盘空间

# du -a

7)列出当前目录里最大的10个文件

# du -s * | sort -n | tail

注意:不要使用du -sh,尽管-h会使可读性更好,但单位可能不统一

6、sort命令

将文本文件内容加以排序。

1)以默认方式对文件内容进行排序显示

# sort file.txt

2)以默认方式对文件内容进行反序显示

# sort -r file.txt

3)查看进程,根据第二列按默认进行排序

# ps -aux | sort -k 2

4)查看进程,按内存使用率升序排序

# ps -aux | sort -nk 4

7、grep命令

用于查找文件中符合条件的字符串,或用于过滤标准输入流。

1)在当前目录中,从扩展名为log的文件中查找包括“java”字符串的文件

# grep java *.log

2)对当前目录及子目录中所有文件,查找包含“java”字符串的文件

# grep -r java *

3)查看端口是否被使用

# netstat -nlp | grep 端口号

4)通过grep过滤进程

如查找tomcat进程一般可以这么写

# ps -ef | grep tomcat

5)查看环境变量中的语言类型,忽略大小写

# set | grep -i lang

8、tail命令

输出文件内容的最后部分

1)显示文件的最后的内容(默认为最后10行)

# tail file.txt

2)显示文件的最后20行

# tail -n 20 file.txt

3)实时监测日志文件

# tail -f logs/catalina.out

9、cat命令

1)查看文件内容

该命令一次性显示整个文件内容

# cat file.txt

2)只给不为空的行编号(-b, --number-nonblank)

# cat -b file.txt

3)给所有行编号(-n, --number)

# cat -n file.txt

4)有出现连续多个空白行的地方,只保留一个空白行(-s, --squeeze-blank)

# cat -s file.txt

5)合并文件a、b为c

# cat a b >> c

6)清空文件

# cat /dev/null > g.txt

7)从键盘输入内容创建文件

输入内容并回车,再Ctrl+C以保存文件内容

# cat > file.txt

10、more命令

分页显示文件内容,每次显示一屏,该命令不支持向后/上翻阅。

# more catalina.out

执行more命令之后,支持一系列命令与操作:

1)Ctrl+F

显示下一整屏

2)i 空格

若指定i,显示下面的 i 行;否则,显示下一整屏。

3)i 回车

若指定i,显示下面的 i 行;否则,显示下一行。

4)v

在当前行启动/usr/bin/vi对之进行编辑修改

5)/pattern

从光标开始处向文件尾搜索pattern,单击n键查找下一处

11、less命令

该命令类似于more命令,但支持向后/上翻阅。

# less catalina.out

当执行查找命令时,只反白显示当前这个符合查找条件的字符串

# less -g catalina.out

当执行查找命令时,不反白显示所有符合查找条件的字符串

# less -G catalina.out

当执行查找命令时,忽略大小写

# less -I catalina.out

显示文件内容,并标示每行的行号

# less -N catalina.out

将数据经由管道导入less命令,以便阅读其内容,最后保存为文件

# set | less -o outputfile.txt

显示百分比

# less -m catalina.out

显示百分比、当前所在行及总行数

# less -M catalina.out

执行less命令之后,支持一系列命令与操作:

1)Ctrl+F

显示下一整屏

2)i 空格

若指定i,显示下面的 i 行;否则,显示下一整屏。

3)i 回车

若指定i,显示下面的 i 行;否则,显示下一行。支持上下键显示上、下一行

4)v

在当前行启动/usr/bin/vi对之进行编辑修改

5)/pattern

从光标开始处向文件尾搜索pattern,小写n查找下一处

6)?pattern

从光标开始处向文件头搜索pattern,小写n查找下一处,大写N反方向查找下一处

12、vi命令

一个强大的Linux文件编辑命令。

1)进入vi的命令

打开或新建文件,并将光标置于第一行首

# vi filename.txt

打开文件,并将光标置于最后一行首

# vi + filename.txt

2)移动光标类命令

H:光标移至屏幕顶行

M:光标移至屏幕中间行

L:光标移至屏幕最后行

0:(注意是数字零)光标移至当前行首

$:光标移至当前行尾

3)屏幕翻滚类命令

Ctrl+f:向文件尾翻一屏

Ctrl+b:向文件首翻一屏

4)插入文本类命令

i:在光标前

I:在当前行首

a:光标后

A:在当前行尾

o:在当前行之下新开一行

O:在当前行之上新开一行

5)删除命令

d0:删至行首

d$:删至行尾

ndd:删除当前行及其后n-1行

dd:删除当前行

6)搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern

?pattern:从光标开始处向文件首搜索pattern

n:在同一方向重复上一次搜索命令

N:在反方向上重复上一次搜索命令

:s/p1/p2:将当前行中的第一个p1用p2替代

:s/p1/p2/g:将当前行中所有p1均用p2替代

:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g:将文件中所有p1均用p2替换

7)选项设置

number:显示当前行的行号

:set nu(set number):显示所有行的行号。或者编辑文件~/.vimrc,添加set nu,这样用vi命令打开文件,就会自动显示行号了

:set nonu(set nonumber):隐藏所有行的行号

8)保存、退出等命令

:w:保存当前文件

:x:保存当前文件并退出

:q:退出vi

:q!:不保存文件并退出vi

:e!:重新载入内容

八、用户管理

1、用户管理

添加用户

# useradd 用户名

删除用户

# userdel 用户名

修改当前用户的密码

# passwd

修改指定用户的密码,仅root用户可以指定用户名

# passwd 用户名

2、用户组管理

添加用户组

# groupadd 用户组名

删除用户组

# groupdel 用户组名

3、查看用户信息

查看用户的UID、GID及所归属的用户组

# id

# id 用户名

查看用户信息

# finger 用户名

# more /etc/passwd | grep 用户名

4、切换用户

切换用户但不切换用户的环境变量

su 用户名

切换用户并切换用户的环境变量

su - 用户名

5、查看登录用户信息

查看当前登录的用户名

# whoami

查看当前已登录系统的所有用户

# who

查看当前已登录系统所有用户的详细信息

# w

九、压缩解压

1、tar命令

文件打包、解压命令,可结合各种算法打包后进行压缩

1)将当前目录下所有文件和目录进行打包为my.tar

# tar -cf my.tar .

2)打包目录/home/jsam,并显示命令执行过程(-v)

# tar -cvf jsam.tar /home/jsam

3)打包目录log,并检查备份文件是否正确(-W)

# tar -cvWf log.tar log

4)打包目录log,并以gzip命令进行压缩

# tar -czvf log.tar.gz log

5)解压tar包

# tar -xvf foo.tar

6)解压gzip压缩包

# tar -xzf foo.tar.gz

7)创建bzip2压缩包

# tar -cjf foo.tar.bz2 bar/

8)解压bzip2压缩包,并将解压后的内容存放到bar目录下,bar目录必须已存在

# tar -xjf foo.tar.bz2 -C bar/

9)从gzip包中解压出index.html文件

# tar -xzf foo.tar.gz index.html

2、zip命令

zip包压缩命令

1)压缩当前目录下的所有文件及子目录

# zip -r first.zip *

3、unzip命令

zip包解压命令。可解压java的war工程包

1)直接解压文件到当前目录

# unzip first.zip

2)从zip包中解压出index.html文件

# unzip first.zip index.html

3)将zip压缩包解压到dir目录下

# unzip first.zip -d dir

4、bzip2命令

bzip2包压缩、解压命令

1)压缩文件

# bzip2 file.20130126

# bzip2 -z file.20130126

结果:file.20130126压缩为file.20130126.bz2,并删除源文件,压缩前后文件的修改时间不变

2)解压文件

# bzip2 -d file.20130126.bz2

结果:file.20130126.bz2解缩为file.20130126,并删除源文件,解缩前后文件的修改时间不变

十、权限设置

1、chmod命令

更改文件或目录的权限。

说明:

u:文件或目录的拥有者

g:文件或目录的所属组

o:其他用户

r:读权限,数字代号为“4”

w:写权限,数字代号为“2”

x:执行权限,数字代号为“1”

-:不具任何权限,数字代号为“0”

读、写与执行的数字代号可以相加形成组合权限,如6、5、3、7分别表示读写、读执行、写执行、读写执行权限

1)给文件所属组增加写权限

# chmod g+w filename.txt

2)增加所有用户对文件的执行权限

# chmod +x filename.txt

3)取消所有用户对文件的执行权限

# chmod a-x filename.txt

4)设置文件拥有者读写权限,所属组读写权限,其他人读权限

# chmod 664 filename.txt

5)设置文件拥有者读写执行权限,所属组读执行权限,其他人没任何权限

# chmod u=rwx,g=rx,o=- filename.txt

2、chown命令

更改文件或目录的拥有者或所属组。

1)更改文件的拥有者为user1,所属组为group1

# chown user1.group1 filename.txt

2)更改dir目录下的所有文件和子目录的拥有者和所属组

# chown -R user1.group1 dir

3)改文件主人

# chown zhanjia a.c 把文件a.c的主人改为zhanjia

3、chgrp命令

更改文件或目录的所属组。

1)把文件的所属组改为jsam

# chgrp jsam tomcat6.0.35.tar.gz

2)更改dir目录下的所有文件和子目录的所属组

# chgrp -R jsam dir/

十一、文件传输

1、ftp命令

1)FTP登录服务器

# ftp 主机地址

2)下载文件

下载单个文件

ftp> get file.txt

下载多个文件

ftp> mget *.txt

ftp> mget file1.txt file2.txt

3)上传文件

上传单个文件

ftp> put file.txt

上传多个文件

ftp> mput *.txt

ftp> mput file1.txt file2.txt

4)mget、mput、mdelete等批处理操作的提示开关设置

ftp> prompt on|off

5)删除远程文件

删除远程文件

ftp> delete file.txt

删除多个远程文件

ftp> mdelete file1.txt file2.txt

6)远程目录管理

在远程建立目录

ftp> mkdir dir

删除远程目录

ftp> rmdir dir

重命名远程文件或目录

ftp> rename src dest

7)在本地端(客户端Linux)执行指定的命令。这个命令很实用,可以在不退出ftp的情况下查看本地端的情况

语法:!<命令>

ftp> !ls

ftp> !dir

8)其他命令

help <命令>、? <命令>:帮助命令,不指定<命令>则列出所有可用的操作命令

ascii、asc:将传输数据的模式设成ASCII模式,适用于传输文本文件

binary、bin:将传输数据的模式设成二进制模式,适用于传输程序文件

ls、cd、pwd:一般的用法与linux命令相同

user <用户账号>:以指定的用户账号及密码登录FTP服务器

bye:退出ftp

2、scp命令

远程文件安全复制命令。数据传输使用ssh,并且和ssh使用相同的认证方式,提供相同的安全保证。

语法:scp [options] [[user@]host1:]file1 [...] [[user@]host2:]file2

一般用法:scp [可选项] 源文件/目录 目标文件/目录

1)下载文件

将远程文件下载到当前目录

scp jsam@119.132.224.1:/opt/server/apache-tomcat-6.0.35.tar.gz .

将远程文件下载为本地文件/root/tomcat6.0.35.tar.gz

scp jsam@119.132.224.1:/opt/server/apache-tomcat-6.0.35.tar.gz /root/tomcat6.0.35.tar.gz

2)上传文件

将本地文件上传到远程目录

scp tomcat6.0.35.tar.gz jsam@119.132.224.1:/opt/

3)下载目录

将远程目录下载到当前目录

scp -r jsam@119.132.224.1:/opt/server .

如果/root/client不存在,则将/opt/server下载为/root/client;如果存在,则将/opt/server下载到为/root/client的子目录

scp -r jsam@119.132.224.1:/opt/server /root/client

4)通过指定源、目标IP,可以同步任意操作两台服务器的文件与目录

scp root@192.168.0.102:/root/tomcat6.0.35.tar.gz jsam@119.132.224.1:/opt/software/

3、wget命令

从互联网下载文件。

下载www.iteye.com首页

# wget www.iteye.com

下载文件

# wget http://www.fayea.com/apache-mirror/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.zip

断点续传

# wget -c http://www.fayea.com/apache-mirror/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.zip

后台下载,同时生成日志文件wget-log

# wget -b http://www.fayea.com/apache-mirror/tomcat/tomcat-6/v6.0.36/bin/apache-tomcat-6.0.36.zip

十二、其他命令

1、wc命令

计算字数。可以计算文件的字节数、字数、字符数或行数。

1)计算文件行数

# wc -l messages.txt

2)计算文件的字节数

# wc -c messages.txt

3)通过管道的方式计算文件个数

# ls | wc -l

2、rpm命令

rpm包管理命令

1)安装rpm包

# rpm -ivh gcc.rpm

2)升级rpm包

# rpm -Uvh gcc.rpm

3)卸载rpm包

# rpm -e gcc

4)查询已安装的rpm包

# rpm -qa

3、查找历史命令

1)history命令

显示执行过的命令

# history

执行编号为158的命令

# !158

2)通过Ctrl+R进行反向查找执行过的命令

组合按键Ctrl+R,输入要查询字符串,再重复组合按键Ctrl+R进行反向查找。

Ctrl+C:取消查找

Esc:结束查找,获取已查找到的命令

回车:直接执行查找到的命令

4、md5sum命令

计算文件的MD5消息摘要

# md5sum filename.txt

5、set命令

查询或设置环境变量

1)查询当前环境变量

# set

6、mount命令

挂载文件系统

1)将/dev/hdb1挂载到/mnt/hdb1

# mount /dev/hdb1 /mnt/hdb1

2)将/dev/hdb1挂载到/mnt/hdb1,并指定载入的是vfat文件系统

# mount -t vfat /dev/hdb1 /mnt/hdb1

7、umount命令

卸载文件系统

1)卸载文件系统

# umount /dev/hdb1

8、nohup命令

不挂断地运行命令,结合&可实现用户退出终端或注销之后,让程序一直在后台运行。

# nohup ./start.sh &

9、date命令

显示或设置系统时间与日期。

1)显示当前系统的日期与时间

# date

# date "+%Y-%m-%d %H:%M:%S"

2)设置系统的时间与日期

# date -s "2013-2-10 12:59:00"

# date -s "2013/2/10"

# date -s "2014-3-12"

# date -s "12:59:00"

10、ssh命令

ssh远程登录

# ssh 用户名@IP地址

11、ping命令

检测主机,通常用来检测主机的网络功能是否正常,两台主机之间网络是不是通的

1)持续检测IP,直至用户主动结束

# ping 192.168.0.100

2)发出5个ping包进行检测

# ping -c 5 192.168.0.100

12、telnet命令

远程登录命令

1)登录主机

# telnet 192.168.0.100

2)检查TCP端口8080是否正在监听

# telnet 192.168.0.100 8080

上一篇:Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试


下一篇:swoole父进程和子进程之间通信的例子