Linux系统管理与维护的基本命令
ls | clear | last |
pwd | who | dmesg |
cd | w | free |
passwd | uname | ps |
su | uptime | top |
一、列出目录内容:ls
ls 是list(列表,列出)的缩写,ls的基本语法:
ls [options] [FILE]...
不带任何选项参数的ls命令,用于列出当前目录下所有的文件和子目录。
ls 目录 :查看指定的目录
重要选项:
-l :以列表形式显示目录内容详细信息
ls -l
第1列 第2列 第3列 第4列 第5列 第6列 第7列
-rw-------. 1 root root 8848 Sep 23 21:02 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Sep 24 09:35 Desktop
drwxr-xr-x 2 root root 4096 Sep 24 09:35 Documents
drwxr-xr-x 2 root root 4096 Sep 24 09:35 Downloads
-rw-r--r--. 1 root root 104291 Sep 23 21:02 install.log
-rw-r--r--. 1 root root 26015 Sep 23 20:58 install.log.syslog
第1列首字母 :类型,-:代表普通文件
d:代表目录文件
b:块设备文件(block)
c:字条设备文件(character)
l:符号链接文件(symbolic link file)
P:命令管道文件(pipe)
S:套接字文件(socket)
第1列其他9个字母:访问权限,
r : 读
w : 写
x : 执行
- : 无
每3个字母代表一类用户的访问权限,一共是3类用户,第一类用户:owner,第二类:group,第3类:other
第2列:对于目录,表示目录里面的内容数目
对于文件,代表文件的硬链接数目(理解为副本)
第3列:目录或文件owner用户的用户名
第4列:目录或文件group名(组名)
第5列:文件大小(字节为单位)
第6列:时间戳(timestamp)最新修改时间
第7列:目录名或文件名
-h:人类可以识别,针对于第五列作单位转换,默认为k
ls -h -l 或 ls -lh
-a : 查看隐藏目录和隐藏文件
目录名或文件名首字母为'.'开头
. 表示当前目录
. . 表示父目录
-d:只显示目录列表,不显示文件
-s:在每个文件后输出该文件的大小,
-k:以k字节大小的形式表示文件的大小
-u:以文件上次被访问的时间排序
-t:以时间排序
-S:以文件大小排序
-x:按列输出,横向排序
-C:按列输出,纵向排序
-o:显示除组信息以外的信息
-m:横向输出文件名,并以“,”做分隔符
-q:用?代替不可输出的字符
-Q:输出的文件名用引号括起来
-A:显示”.”开头的隐藏文件不包含 “.” 、“. .”。
-d:显示目录自身属性
-i: 显示文件索引节点号 index mode inode
-r:逆序显示文件及目录
-R:递归显示文件及目录,列出所有子目录下的文件
-pF:在每一个文件附上一个字符以说明文件的类型,
“*”表示可执行的普通文件
“/”表示目录
“@”表示符号链接
“|”表示FIFOs
“=”表示套接字(socket)
二、显示当前目录的完整路径:pwd
Pwd命令会显示当前所在的位置,及工作目录。
三、目录间的切换:cd
cd是change directory(改变目录)的缩写,它有点多个空间内任意穿越的意思。
其基本语法: cd [目录名]
cd命令的选项说明
cd [目录名] :切换到目录名指定的目录下,在Linux下文件和目录是区分大小写的
cd或 cd ~ :返回当前用户的默认工作目录,注意cd与~之间有一个空格
cd ~[用户名]: 返回指定用户的目录下,这里~与用户名之间没有空格
cd ..或者cd ../: 返回上一级工作目录下
cd / :返回到根目录
四、显示并修改系统时间与日期:date
显示或者修改系统时间与日期。只有超级用户才能用date命令设置时间,一般用只能用date命令显示时间。date命令的语法如下:
date [选项] 显示时间格式(以+开头,后面接时间格式)
date命令的选项及说明:
-s (set):设置系统时间
-d (date):显示描述的日期
时间显示格式表
%H 显示小时,表示范围是00~23
%I 显示小时,表示范围是01~12
%k 显示小时,表示范围是0~23
%l 显示小时,表示范围是1~12
%M 显示分钟,显示格式为00~59
%S 显示秒钟,显示格式为00~59
%p 显示是AM(上午)还是PM(下午)
%r 显示时间,格式为hh:mm:ss AM或PM,其中hh为小时,mm为分钟,ss为秒
%T 显示时间,格式为hh:mm:ss
%x 显示年份和日期,格式为mm/dd/yyyy,这里的yyyy代表年份
%X 显示时间格式,相当于%H:%M:%S的组合
%a 显示星期几
%b或%B 显示月份,%b是月的简称,%B是月的全称
%m 显示月份,表示格式为从01~12
%c 显示日期和时间格式为%a:
%Z 显示时区
%d 显示一个月的第几天
%D 显示年份和月份,格式为mm/dd/yy,这里yy代表年份的最后两个数字
%Y或%y 显示年份,%Y显示完整的年份,%y显示年份的最后两个数字
%c 显示日期和时间格式,相当于“%a %d %b %Y %r %Z”的组合
用法举例
(1).用指定的格式显示时间和日期
# date ‘+This date now is :%x, time is now:%X, thanks!’
(2).修改系统时间
[root@V-facelab ~]# date -s 20150715
[root@V-facelab ~]# date -s 18:30
合并
[root@V-facelab ~]# date -s “20150715 18:30”
(3).显示两天前的时间
[root@V-facelab ~]# date ‘ +%Y-%m-%d’
[root@V-facelab ~]# date -d “2 days ago” +%Y-%m-%d
五、设置用户口令:passwd
passwd是pass word的缩写,用于设置用户口令。语法格式如下:
passwd [用户名]
1)普通用户要修改自己的口令,可使用以下命令:
passwd
然后根据提示连续两次输入口令即可。
2)超级用户root修改某个别个用户口令时,使用以下命令:
passwd [用户名]
然后根据提示连续两次输入口令即可。
Root修改自己的密码时,只需输入:
passwd
或者
passwd root
然后根据提示连续两次输入口令即可。
六、切换用户身份:su
Su命令主要用于改变用户份,其格式如下:
su [选项] [用户名]
Su的命令选项说明
- : 加载相应用户下的环境变量
-l : 使目前的shell成为改变身份后用户默认的shell,即为完全切换
-c : 改变身份运行一个指令后就结束
-m :改变用户身份,但是不改变环境变量
示例:
(1)普通用户要成为超级用户,可执行如下命令。
$su -
根据系统提示输入超级用户指令,即可转变为超级用户。
注:su后面的“-”就是加载root环境变量,如果直接输入su也可以转变为超级用户,但没有加载root环境变量,因此某些指令可能无法执行,会提示“command not found”。
(2)在普通用户A下修改超级用户root的命令,可以使用下面的命令。
$su -c passwd
然后根据提示输入root口令,接着连续两次输入root用户新的密码。执行完毕,系统自动退出到普通用户A下。
七、清除屏幕信息:clear
Clear命令用来清除屏幕信息,格式如下:
clear
八、显示目前登录到系统的用户:who
Who命令显示当前登录到系统的用户,其格式如下:
who [选项] [file]
Who命令的一般 输出 格式如下:
名称 [状态] 线路 时间 [活动] [进程标识](主机名)
》名称:用户的登录名。
》状态:表明线路是否对用户都是可写的
》线路:类似于pts/1、pts/2等,此线路标识在/dev目录中可找到
》时间:用户登录系统的时间
》活动:某个用户在自己的线路上最后一次活动发生以来到现在的时间。如果此项是个“.”,就表示一分钟内的线路活动;如果线路保持静止已经超过24h或自从系统启动以来还没有被使用过,那么此项标记为“old”。
》进程标识:用户登录shell的进程id。
》主机名:登录到Linux系统上的客户端机器标识
Who命令选项说明:
-a : 列出所有信息,相当于所有选项
-b : 系统最近启动的时间信息
-l : 列出所有可登录的终端信息
-m : 仅列出关于当前终端的信息。“who -m”命令等同于”who am i”和”who am I”命令。
-q : 列出在本地系统上的用户和用户数清单
-r : 显示当前系统的运动级别
-s : 仅显示名称、线路和时间字段信息,这是who默认的输出,即”who”和”who -s”命令是等效的。
-u : 显示当前每个用户的登录名、登录终端、登录时间、线路活动和进程标识
-T或-w :显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到线路故障
在Linux下who通常通过/var/run/utmp文件来获取信息,如果“[file]”选项指定另一个文件,则who命令不在默认读取/var/run/utmp文件,而是读取指定文件来获取信息。
举例
1)系统处于什么运行级别
Who -r
2)显示系统最近启动日期,以及当前每个用户的登录详情、终端状态
Who -buT
九、显示登录到系统的用户信息:w
用于显示登录到系统的用户信息,其格式如下:
w [选项] [用户]
W命令的选项及其说明:
-h :不显示输出信息标题
-l :用长格式输出
-s :用短格式输出,不显示登录时间、JCPU和PCPU时间
-V :显示版本信息
举例
显示当前用户登录信息
[root@V-facelab ~]# w
23:15:46 up 6 min, 2 users, load average: 1.89, 1.15, 0.49
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 :0 23:14 6:12 30.04s 30.04s /usr/bin/Xorg :
root pts/0 :0.0 23:15 0.00s 0.31s 0.21s w
》上面第一行输出显示了当前的系统时间、系统从启动到现在已经运行的时间到系统中的用户数和系统平均负载。平均负载是指在1min、5min、15min内系统负载状况。
》USER:表示登录系统的用户
》TTY:表示用户使用的TTY名称
》FROM:表示用户从哪里登录进来,一般显示远程登录主机的IP地址或者主机名
》LOGIN@ :用户登录的时间和日期
》IDLE: 表示某个程序上次从终端开始执行到现在所持续的时间
》JCPU :表示该终端上的所有进程及子进程使用系统的总时间
》PCPU:当前活动进程使用的系统时间
》WHAT:当前用户执行的进程名称和选项
十、显示操作系统相关信息:uname
Uname命令用来显示操作系统相关信息。其格式如下:
uname [选项]
Uname命令的选项及其说明:
-a : 显示操作系统全部信息
-m :显示系统CPU类型,是32位还是64位系统
-n : 显示操作系统的主机名
-s : 显示操作系统类型
-r :显示操作系统的内核版本
十一、输出系统任务队列信息:uptime
uptime命令用来输出系统任务队列信息,其格式如下:
uptime
uptime输出当前系统信息、系统开机到现在的运行时间、目前有多少用户在线和系统平均负载等。
举例
[root@V-facelab ~]# uptime
13:02:49 up 4 days, 1:28, 2 users, load average: 0.12, 0.20, 0.17
上面的输出表示现在系统时间是13:02:49,系统已经运行4天零1小时28分钟,目前有两个用户在线,系统在1min、5min、15min到现在的平均负载为0.12、0.20、0.17。
十二、列出目前与过去登入系统的用户相关信息:last
当执行last指令时,它会默认读取位于/var/log目录下名称为wtmp的文件,并把该文件记录的登入系统的用户名全部显示出来。
last命令选项说明:
-a :把从何处登入系统的主机名称或IP地址显示在最后一行
-R :不显示登入系统的主机名称或IP地址
-x :显示系统关机、重新开机以及执行等级的改变等信息
-n<显示列数>或 - <显示列数> :设置列出名单的显示列数
-d :将显示的IP地址转换成主机名称
十三、显示开机信息:dmesg
显示开机信息。内核会将开机信息存储在系统缓冲区(ring buffer)中,如果开机来不及查看相关信息,可以再开机后利用dmesg命令查看,也可在/var/log/目录中查看dmesg文件。其格式如下:
dmesg [选项]
dmesg选项说明:
-c : 显示开机信息后,清除ring buffer信息
-s : 设置缓冲区大小,默认设置为8192
-n : 设置记录信息的层次
十四、系统内存状态查看:free
Free命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存。其格式如下:
free [选项] [ -s (间隔秒数) ]
free命令的选项及说明如下:
-b : 以byte为单位显示内存使用情况
-m : 以MB为单位显示内存使用情况
-K : 以KB为单位显示内存使用情况
-t : 显示内存总和列
-s : 根据指定的间隔秒数持续显示内存使用情况
-o : 不显示系统缓冲区列
举例:
[root@V-facelab ~]# free -m
total used free shared buffers cached
Mem: 2037 561 1476 4 56 303
-/+ buffers/cache: 201 1835
Swap: 2015 0 2015
提示:系统总的物理内存为2GB,已经使用了561MB,空闲的内存有1476MB。而交换分区swap总大小为2GB,还没有被系统使用。
十五、系统进程瞬间的运行动态:ps
Ps命令显示系统进程瞬间的运行状态,其格式如下:
ps [选项]
ps选项说明:
-a : 显示所有用户的进程,包含每个程序的完整路径
-x : 显示所有系统程序,包括那些没有终端的程序
-u : 显示使用者的名称和起始时间
-f : 详细演示程序执行的路径群
-c : 只显示进程的名称,不显示进程的完整路径
-e : 将除内核进程外所有的进程信息写到标准输出
举例:
[root@V-facelab ~]# ps
PID TTY TIME CMD
5632 pts/0 00:00:00 bash
5649 pts/0 00:00:00 ps
*1*要查看目前使用者的进程,默认ps命令输出使用者是自己的进程:
》 PID是进程的标识号
》 TTY是进程所属的终端控制台
》 TIME列是进程所使用的总的CPU时间
》 CMP列列出正在执行的命令行
*2*查看系统所有进程,使用以下命令:
[root@V-facelab ~]# ps -ef
Ps命令是Linux系统最基本最常用的,非常强大的进程查看命令,使用该命令可以确定哪些进程在运行,进程占用了多少资源,是否合理,运行状态是否正常,进程是否结束,进程有没有僵尸现象,等等,该命令最常用的选项就是e、f、a、u,相应的选项组合为
有ps -ef、ps aux,可以通过这些组合准确定位系统进程运行状态。
十六、实时监控系统处理器状态命令:top
Top命令提供了实时的对系统处理器状态的监控,它能够实时显示系统中各个进程的资源暂用状况。
该命令可以按照对CPU的使用、内存使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。
查看即时活跃的进程,类似于Windows的任务管理器。其格式如下:
top [选项]
top选项含义说明:
-d :指定每两次屏幕信息刷新之间的时间间隔
-i : 不显示闲置或者僵尸的进程信息
-c : 显示进程的整个命令路径,而不是只显示命令名称
-s : 使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
-b : 分屏显示输出信息,结合“-n”选项可以将屏幕信息输出到文档
-n : top输出信息更新的次数,完成后将退出top命令
top命令除了一些选项,还有很多交互式命令。交互式命令就是在top命令执行过程中用的一些命令,这些命令都是单个字母,从应用来讲,熟悉这些交互式命令至关重要。
下表为交互式命令和具体含义的展示:
h或? : 显示帮助信息,给出交互式命令的一些说明总结
K : 终止一个进程,系统将提示用户输入一个需要终止进程的PID
i : 忽略闲置进程和僵死进程,这是一个开关式命令、
s : 改变top输出信息两次刷新之间的时间,系统将提示输入刷新时间,单位是s,如果是小数,就换算成ms;如果输入0,系统输出将不断刷新,默认刷新时间是5s。需要注意的是,如果设置太小的时间,可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大。
o或者O : 改变top输出信息中显示项目的顺序。按小写的“a~z”键可以将相应的列向右移动,而按大写的“A~Z”键可以将相应的列向左移动。最后按回车键确定。
F或者f: 从当前显示列表中添加或者删除的项目。按f键后会显示列表,按“a~z”键即可显示或隐藏对应的列,最后按回车键确定
m : 切换显示内存信息
t : 切换显示进程和CPU状态信息
r : 重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10
l : 切换显示平均负载和启动时间信息
q :退出top显示
c :切换显示完整命令行和命令名称信息
M : 根据驻留内存大小进制排序输出
P : 根据CPU使用百分比大小进行排序输出
T : 根据时间/累计时间进行排序输出
S : 切换到累计模式
W : 将当前top设置写入~/.toprc文件中
举例:
查看当前系统活动进程,具体的命令和结果:
[root@V-facelab ~]# top
top - 07:37:06 up 8:28, 2 users, load average: 0.21, 0.07, 0.01
Tasks: 142 total, 1 running, 141 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.4%us, 3.3%sy, 0.0%ni, 92.9%id, 0.3%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 2086236k total, 580524k used, 1505712k free, 63368k buffers
Swap: 2064380k total, 0k used, 2064380k free, 310944k cached
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - -
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2123 root 20 0 73708 21m 8848 S 11.7 1.0 18:48.69 Xorg
2435 root 20 0 56592 12m 9m S 4.4 0.6 5:15.70 nm-applet
5970 root 20 0 2696 1032 784 R 2.9 0.0 0:00.14 top
1314 root 20 0 38932 4208 3424 S 1.5 0.2 1:49.05 vmtoolsd
2457 root 20 0 27740 8560 7288 S 1.5 0.4 2:21.92 notification-ar
1 root 20 0 2896 1424 1204 S 0.0 0.1 0:03.75 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.28 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.56 watchdog/0
7 root 20 0 0 0 0 S 0.0 0.0 0:02.39 events/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
从上面实例中,top的输出可以分为统计信息区和进程信息区两个部分,即前5行显示为统计信息区,下面为进程信息区。
(1)统计信息区
第1行为任务队列信息,含义如下。
》 07:37:06:表示当前系统时间
》 up 3 days,8:28,表示系统已经启动3天零8小时28分钟了
》 2 users, :当前登录系统的用户数
》 load average:0.21, 0.07, 0.01:表示系统平均负载,3个数值分别为1min、5min、15min前到现在的系统平均负载值。
第2行和第3行分别为进程和CPU消息,具体含义如下:
》Tasks: 142 total, 进程的总数
》1 running:正在运行的进程数
》141 sleeping, :处于睡眠状态的进程数
》0 stopped,:停止的进程数
》0 zombie :僵死的进程数
》Cpu(s): 3.4%us, :表示用户进程占用CPU的百分比
》3.3%sy, :系统进程占用CPU的百分比
》0.0%ni, :用户进程空间内改变过优先级的进程占用CPU百分比
》92.9%id, :空闲CPU占用的百分比
》0.3%wa, : 等待输入输出的进程占用CPU的百分比
最后两行输出的是内存信息,具体含义如下:
》Mem: 2086236k total, :系统的物理内存大小
》 580524k used, :已经使用的物理内存大小
》 1505712k free, :目前空余内存大小
》63368k buffers :用于做内核缓冲区的内存大小
》Swap: 2064380k total, :交换分区内存大小
》0k used, :已经使用的交换分区大小
》2064380k free, :空闲的交换分区大小
》310944k cached :高速缓存
(2)进程信息区
进程信息区显示了每个进程的运行状态,我们先看一看每列输出的含义
》PID:进程的id
》USER :进程所有者的用户名
》PR : 进程优先级
》NI :nice值。负值表示高优先级,正值代表低优先级
》VIRT :进程使用的虚拟内存总量,单位KB。VIRT=SWAP+RES
》RES :进程使用的,未被换出的物理内存大小,单位kB。RES=CODE+DATA。
》SHR :共享内存大小,单位kB。
》S :进程状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪/停止,Z 表示僵死进程。
》%CPU:上次更新到现在的CPU时间占用百分比
》%MEM:进程占用的物理内存百分比
》TIME+ :进程使用的CPU时间总计,单位为1/100秒
》COMMAND: 正在运行进程的命令名或者命令路径