lscpu命令能够查看 CPU 和处理单元的信息,该命令没有任何其他选项或者别的功能。
lscpu
lspci可以用来列出所有的 PCI 总线,还有与 PCI 总线相连的设备的详细信息,比如 VGA 适配器、显卡、网络适配器、usb 端口、SATA 控制器等。
lspci
可以通过运行下面的命令来过滤出特定设备的信息,例如关于显卡信息:
lspci -v | grep "VGA" -A 12
lshw是一个通用的工具,可以列出多种硬件单元的详细或者概要的信息,比如 CPU、内存、usb 控制器、硬盘等。lshw能够从各个“/proc”文件中提取出相关的信息。
lshw -short
通过运行下面的命令可以列出像硬盘和光驱等 scsi/sata 设备的信息:
lsscsi
lsusb命令能够列出 USB 控制器和与 USB 控制器相连的设备的详细信息。默认情况下,lsusb命令只打印出概要信息,可以通过使用-v参数打印每一个usb端口的详细信息。
lsusb
inxi是一个 bash 脚本,能够从系统的多个来源和命令获取硬件信息,并打印出一个非技术人员也能看懂的友好的报告。
默认情况下,Ubuntu 上没有安装inxi。可以通过运行下面命令来安装Inxi:
sudo apt-get install inxi
安装完Inxi之后,通过运行下面命令能够得到硬件相关的信息:
inxi -Fx
df命令能够列出不同分区的概要信息、挂载点、已用的和可用的空间,可以在使用df命令的时候加上-H参数(易读格式)。
df -H
通过使用free命令可以查看系统中使用的、闲置的和 RAM 的总体数量。
free -m
dmidecode命令与其他命令不同。该命令是从硬件中的 DMI 表中读取信息的。
要查看处理器的信息,运行下面命令:
sudo dmidecode -t processor
要查看内存的信息,运行下面命令:
sudo dmidecode -t memory
要查看 bios 的信息,运行下面命令:
sudo dmidecode -t bios
hdparm命令可以用来显示像硬盘这样的 sata 设备的信息。
sudo hdparm
ps
‘ps’是Linux 中最基础的浏览系统中的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。下述选项可以得到更多有用的消息。
ps -a - 列出所有运行中/激活进程
ps -ef |grep - 列出需要进程 ps -aux - 显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM等
pstree
linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。如果指定了pid了,那么树的根是该pid,不然将会是init(pid: 1)。
top
‘top’是一个更加有用的命令,可以监视系统中不同的进程所使用的资源。它提供实时的系统状态信息。显示进程的数据包括 PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。
htop
htop与top很类似,但是htop是交互式的文本模式的进程查看器。它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。使用上下光标键选择进程,F7和F8改变优先级,F9杀死进程。Htop不是系统默认安装的,所以需要额外安装。
nice
通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更多CPU时间片给这个进程。默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)列查看。
进程优先级值的范围从-20到19。值越低,优先级越高。
nice <优先值> <进程名> - 通过给定的优先值启动一个程序
上述命令例子中,可以看到‘top’命令获得了-3的优先值。
renice
renice命令类似nice命令。使用这个命令可以改变正在运行的进程优先值。注意,用户只能改变属于他们自己的进程的优先值。
renice -n -p - 改变指定进程的优先值
初始优先值为0的3806号进程优先值已经变成了4.
renice -u -g - 通过指定用户和组来改变进程优先值
kill
这个命令用于发送信号来结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用-9参数来执行。注意,使用强制杀死的时候一定要小心,因为进程没有时机清理现场,也许写入文件没有完成。如果我们不知道进程PID或者打算用名字杀死进程时候,killall就能派上用场。
kill <pid>kill -9 <pid>killall -9 - 杀死所有拥有同样名字的进程
如果你使用kill,你需要知道进程ID号。pkill是类似的命令,但使用模式匹配,如进程名,进程拥有者等。
pkill <进程名>
ulimit
该命令用于控制系统资源在shell和进程上的分配量。对于系统管理员是最有用的,可以管理重度使用和存在性能问题的系统。限制资源大小可以确保重要进程持续运行,其他进程不会占用过多资源。
ulimit -a - 显示当前用户关联的资源限制
-f - 最大文件尺寸大小-v - 最大虚拟内存大小(KB)-n - 增加最大文件描述符数量-H : 改变和报告硬限制-S : 改变和报告软限制
浏览ulimit man页面获取更多选项。
w
w 提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息,如当前时间、系统运行时长、登录用户总数、过去的1,5,15分钟内的负载均衡数。
基于这些用户信息,用户在终止不属于他们的进程时要小心。
who是类似命令,提供当前登录用户列表、系统启动时间、运行级别等。
whoami 命令输出当前用户ID
pgrep
pgrep的意思是”进程号全局正则匹配输出”。该命令扫描当前运行进程,然后按照命令匹配条件列出匹配结果到标准输出。对于通过名字检索进程号是很有用。
pgrep -u mint sh
这个命令将会显示用户为‘mint’和进程名为‘sh’的进程ID。
fg , bg
有时,命令需要很长的时间才能执行完成。对于这种情况,我们使用‘bg’命令可以将任务放在后台执行,而用‘fg’可以调到前台来使用。
我们可以通过‘&’在后台启动一个程序:
find . -name *iso > /tmp/res.txt &
一个正在运行的程序也可以通过“CTRL+Z”和“bg”命令组合放到后台运行。
find . -name *iso > /tmp/res.txt & - 启动一个程序ctrl+z - 挂起当前执行程序bg - 将程序放到后台运行
我们可以使用‘jobs’命令列出所有后台进程。
jobs
使用‘fg’命令可以将后台程序调到前台执行。
fg %进程id
ipcs
ipcs命令报告进程间通信设施状态。(共享内存,信号量和消息队列)
用-p参数联合-m、-s或-q使用,可以获得相关的进程间通信的进程ID。
ipcs -p -m
find
find是最常使用和最强大的查找命令,可以找到任何想查找找的文件
用法如下:
$ find <指定目录> <指定条件> <指定动作>
如果不加参数,默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件)
实例:
$ find /home -name 'a*'
搜索home目录(含子目录)中所有文件名以a开头的文件
$ find /home -name 'a*' -ls
搜索home目录(含子目录)中所有文件名以a开头的文件并显示它们的详细信息。
$ find /home -type f -mmin -10
搜索home目录中所有过去10分钟中更新过的普通文件,如果不加-type f参数,则搜索普通文件+特殊文件+目录。
locate
locate命令实质上是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
实例:
$ locate /etc/sh
搜索etc目录下所有以sh开头的文件
$ locate ~/m
搜索home录下,所有以m开头的文件。
$ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写
whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数则返回所有信息
实例:
$ whereis grep
which
which命令是在PATH变量指定的路径中搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令
实例:
$ which grep
type
type命令其实不能算查找命令,它是用来查看某个命令是由shell自带的还是由shell外部的独立二进制文件提供的,如果一个命令是外部命令,使用-p参数会显示该命令的路径,相当于which命令
实例:
$ type cd
输出 “cd 是 shell 内建”
$ type grep
输出 “grep 是 `grep --color=auto' 的别名”
$ type -p grep
加上-p参数后就相当于which命令
四、Linux系统命令总结---passwd命令
正如 passwd 命令的名称所示,其用于改变系统用户的密码。如果 passwd 命令由非 root 用户执行,那么它会询问当前用户的密码,然后设置调用该命令的用户的新密码。当此命令由超级用户 root 执行的话,就可以重新设置任何用户的密码,包括不知道当前密码的用户。
当使用非 root 用户登录时,运行 passwd 命它会重置当前登录用户的密码。
[linuxtechi@linuxworld ~]$ passwd Changing password for user linuxtechi. Changing password for linuxtechi. (current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully. [linuxtechi@linuxworld ~]$
当 root 用户登录后并运行 passwd 命令时,默认情况下会重新设置 root 的密码,如果在 passwd 命令后指定了用户名,它会重置该用户的密码。
[root@linuxworld ~]# passwd [root@linuxworld ~]# passwd linuxtechi
注意 : 系统用户的密码以加密的形式保存在 /etc/shadow 文件中。
要显示用户密码的状态信息,请在 passwd 命令后使用 -S 选项。
[root@linuxworld ~]# passwd -S linuxtechi linuxtechi PS 2015-09-20 0 99999 7 -1 (Password set, SHA512 crypt.) [root@linuxworld ~]#
在上面的输出中,第一个字段显示的用户名,第二个字段显示密码状态(PS = 密码设置,LK = 密码锁定,NP = 无密码),第三个字段显示了上次修改密码的时间,后面四个字段分别显示了密码能更改的最小期限和最大期限,警告期限和没有使用该口令的时长。
为了显示所有用户密码的状态信息需要使用 “-aS”选项在passwd 命令中,示例如下所示:
root@localhost:~# passwd -Sa
注:不同发行版/passwd 的行为不同。CentOS6.6 没有测试成功,但 Ubuntu 可以。
用我做例子,删除 ‘linuxtechi‘ 用户的密码。
[root@linuxworld ~]# passwd -d linuxtechi Removing password for user linuxtechi. passwd: Success [root@linuxworld ~]# [root@linuxworld ~]# passwd -S linuxtechi linuxtechi NP 2015-09-20 0 99999 7 -1 (Empty password.) [root@linuxworld ~]#
“-d” 选项将清空用户密码,并禁用用户登录。
在 passwd 命令中使用 ‘-e’ 选项会立即使用户的密码过期,这将强制用户在下次登录时更改密码。
[root@linuxworld ~]# passwd -e linuxtechi Expiring password for user linuxtechi. passwd: Success [root@linuxworld ~]# passwd -S linuxtechi linuxtechi PS 1970-01-01 0 99999 7 -1 (Password set, SHA512 crypt.) [root@linuxworld ~]#
现在尝试用 linuxtechi 用户 SSH 连接到主机。
在 passwd 命令中使用 ‘-l‘ 选项能锁定用户的密码,它会在密码的起始位置加上“!”。当他/她的密码被锁定时,用户将不能更改它的密码。
[root@linuxworld ~]# passwd -l linuxtechi Locking password for user linuxtechi. passwd: Success [root@linuxworld ~]# passwd -S linuxtechi linuxtechi LK 2015-09-20 0 99999 7 -1 (Password locked.) [root@linuxworld ~]#
[root@linuxworld ~]# passwd -u linuxtechi Unlocking password for user linuxtechi. passwd: Success [root@linuxworld ~]#
在 passwd 命令中使用 -i 选项用于设系统用户的非活动时间。当用户(我使用的是linuxtechi用户)密码过期后,用户再经过 ‘n‘ 天后(在我的情况下是10天)没有更改其密码,用户将不能登录。
[root@linuxworld ~]# passwd -i 10 linuxtechi Adjusting aging data for user linuxtechi. passwd: Success [root@linuxworld ~]# [root@linuxworld ~]# passwd -S linuxtechi linuxtechi PS 2015-09-20 0 99999 7 10 (Password set, SHA512 crypt.) [root@linuxworld ~]#
在下面的例子中,linuxtechi用户必须在90天内更改密码。0表示用户可以在任何时候更改它的密码。
[root@linuxworld ~]# passwd -n 90 linuxtechi Adjusting aging data for user linuxtechi. passwd: Success [root@linuxworld ~]# passwd -S linuxtechi linuxtechi PS 2015-09-20 90 99999 7 10 (Password set, SHA512 crypt.) [root@linuxworld ~]#
‘-w’ 选项在 passwd 命令中用于设置用户的警告期限。这意味着,n天之后,他/她的密码将过期。
[root@linuxworld ~]# passwd -w 12 linuxtechi Adjusting aging data for user linuxtechi. passwd: Success [root@linuxworld ~]# passwd -S linuxtechi linuxtechi PS 2015-09-20 90 99999 12 10 (Password set, SHA512 crypt.) [root@linuxworld ~]#