您的位置:首页 > 其它

系统管理常用命令

2014-10-26 09:41 162 查看
显示内核信息

luther@gliethttp:~$ uname -a

显示当前加载了的模块

luther@gliethttp:~$ lsmod

显示pc所有硬件配置信息

luther@gliethttp:~$ lshw

显示系统pci硬件信息

luther@gliethttp:~$ lspci

显示连接到usb-hub上的所有设备信息

luther@gliethttp:~$ lsusb

显示硬盘,u盘分区信息

luther@gliethttp:~$ sudo fdisk -l

显示磁盘使用情况信息

luther@gliethttp:~$ df -h

luther@gliethttp:~$ df -h / 显示根目录磁盘使用信息

显示当前文件夹占用空间情况

luther@gliethttp:~$ du -sh /vobs/dbus

显示硬盘全部信息

luther@gliethttp:~$ sudo hdparm -i /dev/sda

显示cpu信息

luther@gliethttp:~$ cat /proc/cpuinfo

显示机器信息

luther@gliethttp:~$ dmesg

显示当前内存使用信息

luther@gliethttp:~$ free -m

luther@gliethttp:~$ free -m -s 1 每隔1秒动态显示

显示该进程打开的文件

luther@gliethttp:~$ lsof -p pid

显示所有使用unix通信的程序

luther@gliethttp:~$ lsof -U

显示deb安装包包含的内容

luther@gliethttp:/var/cache/apt/archives$ dpkg -c sysstat_8.1.2-2ubuntu1_i386.deb

显示磁盘负载﹑cpu和进程pid负载信息

luther@gliethttp:~$ sudo apt-get install sysstat

luther@gliethttp:/var/cache/apt/archives$ dpkg -c sysstat_8.1.2-2ubuntu1_i386.deb

一共5个bin文件

/usr/bin/sadf

/usr/bin/iostat

/usr/bin/mpstat

/usr/bin/pidstat

/usr/bin/sar.sysstat

luther@gliethttp:~$ iostat 1 // 每1描显示一次磁盘使用情况

显示网络通信状况

luther@gliethttp:~$ netstat

luther@gliethttp:~$ netstat -n // 显示所有unix通信程序

luther@gliethttp:~$ netstat -s // 查看网络统计信息

显示所有使用ipv4和ipv6通信的程序

luther@gliethttp:~$ lsof -i

显示当前监听80号端口的程序

luther@gliethttp:~$ lsof -i :80

显示指定ip机器的MAC地址

luther@gliethttp:~$ arping 192.168.23.1

显示进程启动过程中发生的所有系统调用

luther@gliethttp:~$ strace /usr/bin/ssh 127.0.0.1

显示系统共享内存﹑共享信号量以及共享队列

luther@gliethttp:~$ ipcs

luther@gliethttp:~$ ipcs -m // 只显示共享内存

luther@gliethttp:~$ ipcs -s // 只显示共享信号量

删除系统共享内存﹑共享信号量以及共享队列

luther@gliethttp:~$ ipcrm -m mem_id // 删除mem_id对应的内存共享区

luther@gliethttp:~$ ipcrm -s sem_id // 删除sem_id对应的信号量共享区

查看系统环境变量

luther@gliethttp:~$ env

查看当前使用的字符集

luther@gliethttp:~$ locale

立即生效.bashrc等shell脚本

luther@gliethttp:~$ . .bashrc // 使用.点操作,或者使用source

前提是必须有sensors传感器

luther@gliethttp:~$ sudo su

root@gliethttp:/home/luther# apt-get install lm-sensors

luther@gliethttp:~$ sudo sensors-detect

也可以添加applet到面板

luther@gliethttp:~$ sudo apt-get install sensors-applet // 然后添加"Hardware Sensors Monitor到面板上

硬盘温度检测

luther@gliethttp:~$ sudo apt-get install hddtemp

luther@gliethttp:~$ sudo hddtemp /dev/sda

/dev/sda: ST3160815AS: 36°C

显示硬盘所有信息工具

luther@gliethttp:~$ sudo apt-get install smartmontools

luther@gliethttp:~$ sudo smartctl --all /dev/sda

AMD处理器降温软件

luther@gliethttp:~$ sudo apt-get install athcool

手工动态设置ip,dns和gateway网关

luther@gliethttp:~$ sudo vim /etc/resolv.conf

nameserver 202.106.0.20

luther@gliethttp:~$ sudo ifconfig eth0 192.168.23.23 netmask 255.255.255.0 up

luther@gliethttp:~$ sudo route add default gw 192.168.23.1 eth0

luther@gliethttp:~$ sudo service networking restart

手工静态永久设置ip,dns和gateway网关

luther@gliethttp:~$ sudo vim /etc/resolv.conf

nameserver 202.106.0.20

luther@gliethttp:~$ sudo vim /etc/network/interfaces

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.23.23

netmask 255.255.255.0

gateway 192.168.23.1

luther@gliethttp:~$ sudo service networking restart

lsblk命令

"lsblk"就是列出块设备。除了RAM外,以标准的树状输出格式,整齐地显示块设备。

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 232.9G 0 disk

├─sda1 8:1 0 46.6G 0 part /

├─sda2 8:2 0 1K 0 part

├─sda5 8:5 0 190M 0 part /boot

├─sda6 8:6 0 3.7G 0 part [SWAP]

├─sda7 8:7 0 93.1G 0 part /data

└─sda8 8:8 0 89.2G 0 part /personal

sr0 11:0 1 1024M 0 rom

“lsblk -l”命令以列表格式显示块设备(而不是树状格式)。

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 232.9G 0 disk

sda1 8:1 0 46.6G 0 part /

sda2 8:2 0 1K 0 part

sda5 8:5 0 190M 0 part /boot

sda6 8:6 0 3.7G 0 part [SWAP]

sda7 8:7 0 93.1G 0 part /data

sda8 8:8 0 89.2G 0 part /personal

sr0 11:0 1 1024M 0 rom

md5sum

md5sum命令可以同时对一批文件进行256位的MD5编码,并可以通过比较前后二次编码值来检测一个文件是否给修改过。由于此命令执行效率较高,所以常可用于大批文件的编译过程中,比如执行第一次编译时,产生每个文件的MD5编码,当第二次或以后编译时,通过MD5编码来确定一个文件是否有修改,而只对有变化的文件进行编译,这样可以大大节省编译的时间。

假设所有需要编译的文件名列表在文件allfiles.txt中:

cat allfiles.txt | xargs md5sum > md5sum_result.txt

md5sum_result.txt中的内容为:

f86bc2cf7fd33e483c02c8d0668b0ed0 ./files/main_zero_array.cpp

d2fb00791f215a5bf5273d6256dec650 ./files/subdir/var_func_para.cpp

844a9b14aaeeb819280b3b346fc89922 ./files/subdir/performance_test.c

efae21a9d993de8b0f29cea04cbcaa3a ./files/main.cpp

c2d956bc14cb2c71efbea91e2a1bc538 ./files/main1.cpp

a33a78c5f03d2fae9a5b79ae8295e6e6 ./files/main.c

b7d16e9dd2c60961501a221091571faf ./files/output_args.c

018ae4b01bbde0d7ffded48419499be1 ./files/case.cpp

如果对./files/case.cpp进行一些修改,再运行命令

cat allfiles.txt | xargs md5sum -c md5sum_result.txt

会得到以下的输出结果:

./files/main_zero_array.cpp: OK

./files/subdir/var_func_para.cpp: OK

./files/subdir/performance_test.c: OK

./files/main.cpp: OK

./files/main1.cpp: OK

./files/main.c: OK

./files/output_args.c: OK

./files/case.cpp: FAILED

cal:

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

1.命令格式:

cal [参数][月份][年份]

2.命令功能:

用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

3.命令参数:

-1 显示一个月的月历

-3 显示系统前一个月,当前月,下一个月的月历

-s 显示星期天为一个星期的第一天,默认的格式

-m 显示星期一为一个星期的第一天

-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

-y 显示当前年份的日历

4.使用实例:

实例1:显示当前月份日历

命令:

cal

输出:

[root@localhost ~]# cal
十二月 2012
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31[root@localhost ~]#
实例2:显示指定月份的日历

命令:

cal 9 2012

输出:

[root@localhost ~]# cal 9 2012
九月 2012
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
实例3:显示2013年日历

命令:

cal -y 2013

cal 2013

实例4:显示自1月1日的天数

命令:

cal -j

输出:

[root@localhost ~]# cal -j
十二月 2012
日 一 二 三 四 五 六
336
337 338 339 340 341 342 343
344 345 346 347 348 349 350
351 352 353 354 355 356 357
358 359 360 361 362 363 364
365 366[root@localhost ~]#
实例5:星期一显示在第一列

命令:

cal -m

输出:

[root@localhost ~]# cal -m
十二月 2012
一 二 三 四 五 六 日
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31[root@localhost ~]#

date:

在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便。

1.命令格式:

date [参数]... [+格式]

2.命令功能:

date 可以用来显示或设定系统的日期与时间。

3.命令参数:

必要参数:

%H 小时(以00-23来表示)。

%I 小时(以01-12来表示)。

%K 小时(以0-23来表示)。

%l 小时(以0-12来表示)。

%M 分钟(以00-59来表示)。

%P AM或PM。

%r 时间(含时分秒,小时以12小时AM/PM来表示)。

%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。

%S 秒(以本地的惯用法来表示)。

%T 时间(含时分秒,小时以24小时制来表示)。

%X 时间(以本地的惯用法来表示)。

%Z 市区。

%a 星期的缩写。

%A 星期的完整名称。

%b 月份英文名的缩写。

%B 月份的完整英文名称。

%c 日期与时间。只输入date指令也会显示同样的结果。

%d 日期(以01-31来表示)。

%D 日期(含年月日)。

%j 该年中的第几天。

%m 月份(以01-12来表示)。

%U 该年中的周数。

%w 该周的天数,0代表周日,1代表周一,异词类推。

%x 日期(以本地的惯用法来表示)。

%y 年份(以00-99来表示)。

%Y 年份(以四位数来表示)。

%n 在显示时,插入新的一行。

%t 在显示时,插入tab。

MM 月份(必要)

DD 日期(必要)

hh 小时(必要)

mm 分钟(必要)

ss 秒(选择性)

选择参数:

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。

-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。

-u  显示GMT。

--help  在线帮助。

--version  显示版本信息

4.使用说明:

1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下: % : 打印出 %:

%n : 下一行

%t : 跳格

%H : 小时(00..23)

%I : 小时(01..12)

%k : 小时(0..23)

%l : 小时(1..12)

%M : 分钟(00..59)

%p : 显示本地 AM 或 PM

%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)

%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数

%S : 秒(00..61)

%T : 直接显示时间 (24 小时制)

%X : 相当于 %H:%M:%S

%Z : 显示时区 %a : 星期几 (Sun..Sat)

%A : 星期几 (Sunday..Saturday)

%b : 月份 (Jan..Dec)

%B : 月份 (January..December)

%c : 直接显示日期与时间

%d : 日 (01..31)

%D : 直接显示日期 (mm/dd/yy)

%h : 同 %b

%j : 一年中的第几天 (001..366)

%m : 月份 (01..12)

%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)

%w : 一周中的第几天 (0..6)

%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yy)

%y : 年份的最后两位数字 (00.99)

%Y : 完整年份 (0000..9999)

2.在设定时间方面:

date -s //设置当前时间,只有root权限才能设置,其他只能查看。

date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00

date -s 01:01:01 //设置具体时间,不会对日期做更改

date -s “01:01:01 2008-05-23″ //这样可以设置全部时间

date -s “01:01:01 20080523″ //这样可以设置全部时间

date -s “2008-05-23 01:01:01″ //这样可以设置全部时间

date -s “20080523 01:01:01″ //这样可以设置全部时间

3.加减:

date +%Y%m%d //显示前天年月日

date +%Y%m%d --date="+1 day" //显示前一天的日期

date +%Y%m%d --date="-1 day" //显示后一天的日期

date +%Y%m%d --date="-1 month" //显示上一月的日期

date +%Y%m%d --date="+1 month" //显示下一月的日期

date +%Y%m%d --date="-1 year" //显示前一年的日期

date +%Y%m%d --date="+1 year" //显示下一年的日期

5.使用实例:

实例1:显示当前时间

命令:

date

date '+%c'

date '+%D'

date '+%x'

date '+%T'

date '+%X'

输出:

[root@localhost ~]# date
2012年 12月 08日 星期六 08:31:35 CST
[root@localhost ~]# date '+%c'
2012年12月08日 星期六 08时34分44秒
[root@localhost ~]# date '+%D'
12/08/12[root@localhost ~]# date '+%x'
2012年12月08日
[root@localhost ~]# date '+%T'
08:35:36[root@localhost ~]# date '+%X'
08时35分54秒
[root@localhost ~]#
说明:

实例2:显示日期和设定时间

命令:

date --date 08:42:00

输出:

[root@localhost ~]# date '+%c'
2012年12月08日 星期六 08时41分37秒
[root@localhost ~]# date --date 08:42:00
2012年 12月 08日 星期六 08:42:00 CST
[root@localhost ~]# date '+%c' --date 08:45:00
2012年12月08日 星期六 08时45分00秒
[root@localhost ~]#
说明:

实例3:date -d参数使用

命令:

输出:

[root@localhost ~]# date -d "nov 22"
2012年 11月 22日 星期四 00:00:00 CST
[root@localhost ~]# date -d '2 weeks'
2012年 12月 22日 星期六 08:50:21 CST
[root@localhost ~]# date -d 'next monday'
2012年 12月 10日 星期一 00:00:00 CST
[root@localhost ~]# date -d next-day +%Y%m%d
20121209[root@localhost ~]# date -d tomorrow +%Y%m%d
20121209[root@localhost ~]# date -d last-day +%Y%m%d
20121207[root@localhost ~]# date -d yesterday +%Y%m%d
20121207[root@localhost ~]# date -d last-month +%Y%m
201211[root@localhost ~]# date -d next-month +%Y%m
201301[root@localhost ~]# date -d '30 days ago'
2012年 11月 08日 星期四 08:51:37 CST
[root@localhost ~]# date -d '-100 days'
2012年 08月 30日 星期四 08:52:03 CST
[root@localhost ~]# date -d 'dec 14 -2 weeks'
2012年 11月 30日 星期五 00:00:00 CST
[root@localhost ~]# date -d '50 days'
2013年 01月 27日 星期日 08:52:27 CST
说明:

date 命令的另一个扩展是 -d 选项,该选项非常有用。使用这个功能强大的选项,通过将日期作为引号括起来的参数提供,您可以快速地查明一个特定的日期。-d 选项还可以告诉您,相对于当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。通过将这个相对偏移使用引号括起来,作为 -d 选项的参数,就可以完成这项任务。

具体说明如下:

date -d "nov 22" 今年的 11 月 22 日是星期三

date -d '2 weeks' 2周后的日期

date -d 'next monday' (下周一的日期)

date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d

date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d

date -d last-month +%Y%m(上个月是几月)

date -d next-month +%Y%m(下个月是几月)

使用 ago 指令,您可以得到过去的日期:

date -d '30 days ago' (30天前的日期)

使用负数以得到相反的日期:

date -d 'dec 14 -2 weeks' (相对:dec 14这个日期的两周前的日期)

date -d '-100 days' (100天以前的日期)

date -d '50 days'(50天后的日期)

实例4:显示月份和日数

命令:

date '+%B %d'

输出:

[root@localhost ~]# date '+%B %d'
十二月 08[root@localhost ~]#
说明:

实例5:显示时间后跳行,再显示目前日期

命令:

date '+%T%n%D'

输出:

[root@localhost ~]# date '+%T%n%D'
09:00:30
12/08/12[root@localhost ~]#
说明:

dd:

1.命令简介

dd 的主要选项:

指定数字的地方若以下列字符结尾乘以相应的数字:

b=512, c=1, k=1024, w=2, xm=number m

if=file #输入文件名,缺省为标准输入。

of=file #输出文件名,缺省为标准输出。

ibs=bytes #一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。

obs=bytes #一次写 bytes 个字节(即一个块大小为 bytes 个字节)。

bs=bytes #同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。

cbs=bytes #一次转换 bytes 个字节,即转换缓冲区大小。

skip=blocks #从输入文件开头跳过 blocks 个块后再开始复制。

seek=blocks #从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。

count=blocks #仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。

conv=conversion[,conversion...] #用指定的参数转换文件。

转换参数:

ascii 转换 EBCDIC 为 ASCII。

ebcdic 转换 ASCII 为 EBCDIC。

ibm 转换 ASCII 为 alternate EBCDIC.

block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

unblock 使每一行的长度都为 cbs ,不足部分用空格填充。

lcase 把大写字符转换为小写字符。

ucase 把小写字符转换为大写字符。

swab 交换输入的每对字节。

noerror 出错时不停止。

notrunc 不截短输出文件。

sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

2.实例分析

2.1.数据备份与恢复

2.1.1整盘数据备份与恢复

备份:

dd if=/dev/hdx of=/dev/hdy #将本地的/dev/hdx整盘备份到/dev/hdy

dd if=/dev/hdx of=/path/to/image #将/dev/hdx全盘数据备份到指定路径的image文件

dd if=/dev/hdx | gzip >/path/to/image.gz

#备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

恢复:

dd if=/path/to/image of=/dev/hdx #将备份文件恢复到指定盘

gzip -dc /path/to/image.gz | dd of=/dev/hdx #将压缩的备份文件恢复到指定盘

2.1.2.利用netcat远程备份

dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234 #在源主机上执行此命令备份/dev/hda

netcat -l -p 1234 | dd of=/dev/hdc bs=16065b #在目的主机上执行此命令来接收数据并写入/dev/hdc

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img

#以上两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当前目录。

2.1.3.备份MBR

备份: dd if=/dev/hdx of=/path/to/image count=1 bs=512

备份磁盘开始的512Byte大小的MBR信息到指定文件

恢复: dd if=/path/to/image of=/dev/hdx

将备份的MBR信息写到磁盘开始部分

2.1.4.备份软盘

dd if=/dev/fd0 of=disk.img count=1 bs=1440k

将软驱数据备份到当前目录的disk.img文件

2.1.5.拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024

将内存里的数据拷贝到root目录下的mem.bin文件

2.1.6.从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso

拷贝光盘数据到root文件夹下,并保存为cd.iso文件

2.2.增加Swap分区文件大小

dd if=/dev/zero of=/swapfile bs=1024 count=262144 #创建一个足够大的文件(此处为256M)

mkswap /swapfile #把这个文件变成swap文件

swapon /swapfile #启用这个swap文件

/swapfile swap swap defaults 0 0 #在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行

2.3.销毁磁盘数据

dd if=/dev/urandom of=/dev/hda1

利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。

2.4.磁盘管理

2.4.1.得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

2.4.2测试硬盘读写速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

2.4.3.修复硬盘

dd if=/dev/sda of=/dev/sda

当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生magnetic flux point。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: