-r 递归下载
# ps命令用于查看系统中的进程状态,格式为:“ps [参数]”,
参数 作用
-a 显示所有的进程(包括其他用户的)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程
Linux系统中时刻运行着许许多多的进程,如果能够合理的管理它们,绝对有益于对系统的性能优化,Linux系统中进程最常见的5种不同的状态是运行、中断、不可中断、僵死与停止,它们的含义分别是:
R(运行):正在运行或在运行队列中等待。
S(中断):休眠中, 在等待某个条件的形成或接收到信号。
D(不可中断):收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
Z:(僵死):进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
T:(停止):进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行。
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
进程的所有者 | 进程ID号 | 运算器占用率 | 内存占用率 | 虚拟内存使用量(单位是KB) | 占用的固定内存量(单位是KB) | 所在终端 | 进程状态 | 被启动的时间 | 实际使用CPU的时间 | 命令名称与参数 |
root | 1 | 0.0 | 0.4 | 53684 | 7628 | ? | Ss | 07:22 | 0:02 | /usr/lib/systemd/systemd |
root | 2 | 0.0 | 0.0 | 0 | 0 | ? | S | 07:22 | 0:00 | [kthreadd] |
# top命令前面的五行为系统整体的统计信息,下面为同学们逐行的讲解下:
第1行:系统时间,运行时间,登录终端数,系统负载(分别为1分钟、5分钟、15分钟的平均值,数值越小意味着负载越低)。
第2行:进程总数,运行中的,睡眠中的,停止的,僵死的。
第3行:用户占用资源,系统内核占用资源,改变过优先级的进程,空闲的资源,等待输入输出的时间。
此行数据均为CPU数据并以百分比格式显示,例如"99.2 id"意味着有99.2%的CPU处理器资源正在空闲中。
第4行:物理内存总量,使用量,空闲量,作为内核缓存的内存量。
第5行:虚拟内存总量,使用量,空闲量,已被提前加载的内存数据。
# pidof命令用于查询某个指定服务进程的PID号码值,格式为:“pidof [参数] [服务名称]”。
PID值是区别每个进程的唯一号码,每次在计算机上运行相同的服务程序都很少会获得同样值的PID号码,例如查询下本机sshd服务程序的PID进程号码值:
[root@linuxprobe ~]# pidof sshd
2156
# killall命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [进程名称]”。
复杂软件的服务程序通常都会有数个进程协同为用户提供服务,如果逐个去结束PID号码又实在太麻烦,因此便可以使用killall命令来批量结束某个服务程序带有的全部进程。例如结束掉网络服务的全部进程,下面以httpd服务程序为例,默认您的RHEL7系统未安装它,当前同学们只需看操作过程和结果即可:
[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]#
# uptime命令用于查看系统的负载信息,格式为:“uptime”。
这个命令真的很棒,它可以为您显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息数据。平均负载值指的是最近1分钟、5分钟、15分钟的系统压力情况(下面加粗的信息部分),负载值越低越好,尽量不要长期超过1。另外您还可以结合搭配用"watch -n 1 uptime"命令来每秒刷新一次来获得当前的系统负载情况。
以下显示输入uptime的信息:
04:03:58 up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
# last命令用于查看所有系统的登入记录,格式为:"last [参数]"。
使用last命令可以看到本机的登录记录,但由于这些信息都是被以日志文件的形式保存在系统中的数据内容,骇客们很轻易的便可对内容进行篡改,所以千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
[root@linuxprobe ~]# last
root pts/0 :0 Mon Aug 24 17:52 still logged in
root :0 :0 Mon Aug 24 17:52 still logged in
(unknown :0 :0 Mon Aug 24 17:50 - 17:52 (00:02)
reboot system boot 3.10.0-123.el7.x Tue Aug 25 01:49 - 18:17 (-7:-32)
root pts/0 :0 Mon Aug 24 15:40 - 08:54 (7+17:14)
root pts/0 :0 Fri Jul 10 10:49 - 15:37 (45+04:47)
# tr命令用于替换文本文件中的字符,格式为:“tr [原始字符] [目标字符]”
例如试试把某个文本内容完整替换成大写英文吧:
[root@linuxprobe ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]
# wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
每当我讲课提到这个命令的时候,总有同学会联想到一种公共设施,哈哈,但其实两者是毫无关系的。Linux系统中的wc命令用于统计文本的行数、字数、字节数等文本内容的命令,如果为了方便自己更快去记忆,其实也可以联想到上厕所时真的好无聊,无聊到竟然数完了整张报纸上有多少行字。
参数 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
# cut命令用于按“列”来提取文本字符,格式为:“cut [参数] 文本”。
如何准确的提取出最想要的数据,这也应该是咱们学习研究的方向之一,按基于“行”的方式来提取是比较简单的,只需要设置好要搜索的关键词即可,但是按列搜索的话不仅要使用“-f”参数来设置需要看的列数,还必须使用“-d”参数来设置间隔符号。因为passwd是用于保存用户信息数据的文件且每一项值都是通过冒号来间隔的,因此可以来尝试下提取出passwd文件中的用户名信息吧,即提取以:(冒号)为间隔符号的第一列内容:
[root@linuxprobe ~]# head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@linuxprobe ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
# diff命令用于比较多个文本文件的差异,格式为:"diff [参数] 文件"。
咱们不仅可以使用“--brief”参数来仅仅确认两个文件是否不同,还可以使用“-c”参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。例如先查看下两个文件的内容,然后进行比较:
仅仅显示比较后的结果,判断文件是否相同:
[root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt
Files diff_A.txt and diff_B.txt differ
使用详细的上下文输出格式来描述文件内容具体的不同:
[root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt
*** diff_A.txt 2017-08-30 18:07:45.230864626 +0800
--- diff_B.txt 2017-08-30 18:08:52.203860389 +0800
# touch命令用于创建空白文件与设置文件的各种时间,格式为:“touch [选项] [文件]”。
这个touch命令可真的是特别好用,它能够创建出空白的文本文件,但这实在太简单不需要去讲,例如“touch linuxprobe”这样就可以创建出一个空白的名为linuxprobe的文本文件,而有难度的操作主要是用于设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)。
咱们可以在修改一个文件前先查看下文件的修改时间,然后再通过touch命令把修改后的文件时间设置伪装成自己没有动过的一样,很多黑客就会这么做呢:
参数 | 作用 |
-a | 仅修改“访问时间”(atime) |
-m | 仅修改“更改时间”(mtime) |
-d | 同时修改atime与mtime |
# mkdir命令用于创建空白的文件夹,格式为:“mkdir [选项] 目录”。
在Linux系统中文件夹是最常见的文件类型之一,除了能创建单个目录外,还可以使用“-p”参数来递归创建出具有嵌套叠层关系的文件目录。
[root@localhost]# mkdir -p a/b/c/d/e
# cp命令用于复制文件或目录,格式为:“cp [选项] 源文件 目标文件”。
想必同学们一定对文件复制操作不是很陌生吧,在Linux系统中的复制操作其实具体还分为3种情况,第一种情况是如果目标对象是个目录,则会把源文件复制到该目录中.,第二种情况是如果目标对象也是个普通文件,则会询问是否要覆盖它.最后是第三种的情况了,如果目标文件是不存在的,则会是正常的复制操作啦。
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为"链接文件",则保留该"链接文件"的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p,d,r为上述的参数) |
# tar命令用于对文件打包压缩或解压,格式为:“tar [选项] [文件]”。
而Linux系统中常见的格式比较多,主要使用的是.tar或.tar.gz或.tar.bz2格式,同学们不用担心格式好多而记不住,其实这些大部分都是由tar命令来完成的。首先“-c”参数是用于创建压缩文件的,“-x”参数是用于解压文件的,因此这两个不能同时放一起使用,其次“-z”参数是指定使用Gzip格式来压缩解压文件,“-j”参数是指定使用bzip2格式来压缩解压文件。解压时候则是根据文件的后缀来决定是何种格式参数,而有些打包操作要数个小时,屏幕没有输出的话您一定会怀疑电脑死机了,也不好判断打包的进度情况,因此非常推荐使用“-v”参数来不断显示压缩或解压的过程给用户,“-C”参数用于指定要解压到的哪个指定的目录,而“-f”参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。我会一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令来把指定的文件来打包压缩,解压的话则是“tar -xzvf 压缩包名称.tar.gz”命令