\[toc\] ## 3-Linux的命令-2 ### 一、高级命令 #### 1、\`hostname\`命令 **用途:** \`hostname\`用来**显示** 或者**设置** 当前系统的主机名,主机名被许多网络程序使用,来标识主机。 **格式:** \`hostname \[选项\]\` 在使用\`hostname\`命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改\`/etc/hosts和/etc/sysconfig/network\`的相关内容。 ##### 示例1:\`hostname \` \`\`\`shell \[root@localhost test\]# hostname localhost.localdomain \`\`\` ##### 示例2:\`hostname 参数\` **常用参数:** - \`-a\`参数:显示主机别名 - \`-d\`参数:显示DNS域名 - \`-i\`参数:显示主机的ip地址 \`\`\`shell \[root@localhost \~\]# hostname -a localhost.localdomain localhost4 localhost4.localdomain4 localhost.localdomain localhost6 localhost6.localdomain6 \[root@localhost \~\]# hostname -d \[root@localhost \~\]# hostname -i ::1 127.0.0.1 \`\`\` #### 2、\`id\`命令 **用途:** \`id\`显示指定用户或当前用户(当未指定用户时)的用户与组信息 **格式:** \`id \[选项\]... \[用户名\]\` ##### 示例1: **显示当前用户的信息** \`\`\`shell \[root@localhost \~\]# id uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 \`\`\` **显示指定用户的基本信息** \`\`\`shell \[root@localhost \~\]# id root uid=0(root) gid=0(root) 组=0(root) \`\`\` **验证上述信息是否正确?** - 验证用户信息:通过文件\`/etc/passwd\` \`\`\`shell \[root@localhost \~\]# cat /etc/passwd \|grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin \`\`\` - 验证用户组信息:通过文件\`/etc/group\` \`\`\`shell \[root@localhost \~\]# cat /etc/group \|grep root root:x:0: \`\`\` ##### 示例2:使用-Z选项显示用户的安全环境 \`\`\`shell \[root@localhost \~\]# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 \`\`\` 结果对应格式:用户:角色:类型:安全等级。(unconfined:无限制的) 是\`SELinux(Security Enhanced Linux)\`的用户和\`Linux\`的用户之间的一个映射的关系。 #### 3、\`whoami\`命令 **用途:** \`whoami\`打印与当前生效的用户ID关联的用户名,一般在\`shell\`脚本中应用。 ##### 示例1:\`whoami \` \`\`\`shell \[root@localhost \~\]# whoami root \[root@localhost \~\]# who am i root pts/1 2021-02-19 08:44 (:0) \`\`\` #### 4、\`ps\`命令 **用途:** \`ps\`命令是\`process status\`的缩写,用于显示当前系统的进程状态。以搭配\`kill\`指令随时中断、删除不必要的程序。 格式:\`ps \[选项\]\` ##### 示例1:\`ps \` 直接\`ps\`,显示当前终端进程的pid,所在终端,实际使用CPU的时间以及命令名称与参数 \`\`\`shell \[root@localhost \~\]# ps PID TTY TIME CMD 12829 pts/1 00:00:00 bash 64188 pts/1 00:00:00 ps \`\`\` \`ps\`命令一般使用时都带参数进行使用 ##### 示例2:\`ps 参数\` **常用参数:** - \`a\`参数:显示现行终端机下的所有程序,包括其他用户的程序 - \`u\`参数:以用户为主的格式来显示进程状况 - \`x\`参数:显示所有程序,不以终端机来区分 - \`-e\`参数:列出程序时,显示每个程序所使用的环境变量 - \`-f\`参数:显示UID,PPID,C与STIME栏位 一般情况下\`a、u、x\`会进行组合使用,\`e、f\`会进行组和使用 **使用\`ef\`组合** \`\`\`shell \[root@localhost \~\]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:16 ? 00:00:02 /usr/lib/systemd/systemd --swi root 2 0 0 08:16 ? 00:00:00 \[kthreadd\] root 4 2 0 08:16 ? 00:00:00 \[kworker/0:0H\] root 6 2 0 08:16 ? 00:00:00 \[ksoftirqd/0\] root 7 2 0 08:16 ? 00:00:00 \[migration/0\] root 8 2 0 08:16 ? 00:00:00 \[rcu_bh\] ..................省略部分输出.................. \`\`\` **说明:** \| UID \| PID \| PPID \| C \| STIME \| TTY \| TIME \| CMD \| \| ------ \| ------ \| ---------- \| --------- \| ------------ \| -------- \| --------------- \| -------------- \| \| 用户ID \| 进程id \| 父级进程ID \| cpu使用率 \| 进程启动时间 \| 所在终端 \| 实际使用CPU时间 \| 命令名称与参数 \| **使用\`aux\`组合** \`Linux\`系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在\`Linux\`系统中,有\`5\`种常见的进程状态,分别为\`运行\`、\`中断\`、\`不可中断\`、\`僵死\`与\`停止\`,其各自含义如下所示。 - R(运行):进程正在运行或在运行队列中等待。 - S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。 - D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。(通常是IO) - Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用\`wait4()\`系统函数后将进程释放。 - T(停止):进程收到停止信号后\`SIGSTOP\`, \`SIGSTP\`, \`SIGTIN\`, \`SIGTOU\`信号后停止运行。 **额外的状态符号含义:** - \< 高优先级(not nice to other users) - N 低优先级(nice to other users) - L 页面锁定在内存(实时和定制的IO) - s 代表当前进程拥有子进程 - l 多线程 - \\+ 在前台进程组(界面进程,如我们执行的命令进程) **使用\`aux\`参数组合查看进程详细情** \`\`\`shell \[root@localhost \~\]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 193980 6168 ? Ss 08:16 0:02 /usr/lib/syste root 66 0.0 0.0 0 0 ? SN 08:16 0:00 \[ksmd\] root 2 0.0 0.0 0 0 ? S 08:16 0:00 \[kthreadd\] root 4 0.0 0.0 0 0 ? S\< 08:16 0:00 \[kworker/0:0H\] root 20 0.0 0.0 0 0 ? R 08:16 0:00 \[kworker/2:0\] root 811 0.0 0.0 55532 808 ? S汪意:上述格式命令是经常使用的命令格式。 如:要查看\`bash\`进程 \`\`\`shell \[root@localhost \~\]# ps -ef \| grep bash root 11411 11398 0 08:40 pts/0 00:00:00 bash root 12829 11398 0 08:44 pts/1 00:00:00 bash root 64272 12829 0 09:00 pts/1 00:00:00 grep --color=auto bash ..................省略部分输出.................. \`\`\` #### 5、\`top\`命令 **用途:** 动态地监视进程活动与系统负载等信息,top命令相当强大,能够动态地查看系统运维状态,完全将它看作\`Linux\`中的强化版的\`Windows\`任务管理器 **格式:** \`top \[选项\]\` ##### 示例1:\`top \` \`\`\`shell \[root@localhost \~\]# top top - 09:02:32 up 46 min, 3 users, load average: 0.18, 0.09, 0.06 Tasks: 261 total, 2 running, 259 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.4 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863032 total, 83024 free, 932008 used, 848000 buff/cache KiB Swap: 2097148 total, 2088692 free, 8456 used. 732096 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9563 root 20 0 3942468 198460 51972 S 5.2 10.7 1:09.55 gnome-shell \`\`\` **说明** - 第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。 - 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。 - 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如"97.1 id"意味着有97.1%的CPU处理器资源处于空闲。 - 第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。 - 第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。 **列头说明** \| 列名 \| 含义 \| \| ------- \| ------------------------------------------------------------ \| \| PID \| 进程ID \| \| USER \| 进行对应的用户 \| \| PR \| 优先级。值越小优先级越高 \| \| NI \| nice值。负值表示高优先级,正值表示低优先级,值为零则表示不会调整该进程的优先级。 \| \| VIRT \| 虚拟内存 \| \| RES \| 常驻内存 \| \| SHR \| 共享内存 \| \| S \| 进程状态 \| \| %CPU \| CPU使用的百分比 \| \| %MEM \| 内存使用的百分比 \| \| TIME+ \| CPU累计使用的时间 \| \| COMMAND \| 进程命令 \| 默认情况下,top命令监控区域仅显示比较重要的PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列,可以通过交互式命令按下f键查看并使用空格键开启或关闭。 \`\`\`shell Fields Management for window 1:Def, whose current sort field is %CPU Navigate with Up/Dn, Right selects for move then or Left commits, 'd' or toggles display, 's' sets sort. Use 'q' or to end! \* PID = Process Id TPGID = Tty Process Grp Id nsMNT = MNT namespace Inode \* USER = Effective User Name SID = Session Id nsNET = NET namespace Inode \* PR = Priority nTH = Number of Threads nsPID = PID namespace Inode \* NI = Nice Value P = Last Used Cpu (SMP) nsUSER = USER namespace Inode \* VIRT = Virtual Image (KiB) TIME = CPU Time nsUTS = UTS namespace Inode \* RES = Resident Size (KiB) SWAP = Swapped Size (KiB) \* SHR = Shared Memory (KiB) CODE = Code Size (KiB) \* S = Process Status DATA = Data+Stack (KiB) \* %CPU = CPU Usage nMaj = Major Page Faults \* %MEM = Memory Usage (RES) nMin = Minor Page Faults \* TIME+ = CPU Time, hundredths nDRT = Dirty Pages Count \* COMMAND = Command Name/Line WCHAN = Sleeping in Function PPID = Parent Process pid Flags = Task Flags UID = Effective User Id CGROUPS = Control Groups RUID = Real User Id SUPGIDS = Supp Groups IDs RUSER = Real User Name SUPGRPS = Supp Groups Names SUID = Saved User Id TGID = Thread Group Id SUSER = Saved User Name ENVIRON = Environment vars GID = Group Id vMj = Major Faults delta GROUP = Group Name vMn = Minor Faults delta PGRP = Process Group Id USED = Res+Swap Size (KiB) TTY = Controlling Tty nsIPC = IPC namespace Inode \`\`\` ##### 示例2:\`top 参数\` **常用参数:** - \`-d\`参数:改变显示的更新速度,或是在交互式命令( \`interactive command\`)按\`s\` - \`-p\`参数:监控指定的\`pid\`进程 - \`-c\`参数:显示完整的命令 - \`-s\`参数:安全模式,将交互式指令取消,避免潜在的危机 - \`-i\`参数:不显示任何闲置 (idle) 或无用 (zombie) 的进程 - \`-n\`参数:更新的次数,完成后将会退出 top - \`-b\`参数:批次档模式,搭配\`n\`参数一起使用,可以用来将\`top\`的结果输出到档案内。 **\`top -d\`改变显示的更新速度** \`\`\`shell \[root@localhost \~\]# top -d 5 \`\`\` 在监控界面中按\`s\`键可输入秒数进行速度调整 \`\`\`shell \[root@localhost \~\]# top ..................省略部分输出.................. # 按下s键进行设置 Change delay from 20.0 to 20 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND \`\`\` 注意:设置更新时间的单位是秒。 **\`top -p\`监控指定的pid进程,多个pid时使用逗号分隔** \`\`\`shell \[root@localhost \~\]# top -p 1,2 ..................省略部分输出.................. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 193980 6168 3224 S 0.0 0.3 0:02.51 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd \`\`\` **\`top -c\`显示完整的命令** \`\`\`shell \[root@localhost \~\]# top -c ..................省略部分输出.................. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9563 root 20 0 3942468 198280 51972 S 2.6 10.6 1:26.46 /usr/bin/gnome-shell \`\`\` **\`top -i\`不显示任何闲置 (idle) 或无用 (zombie) 的进程** \`\`\`shell \[root@localhost \~\]# top -i ..................省略部分输出.................. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9563 root 20 0 3942468 198272 51972 S 2.8 10.6 1:28.33 gnome-shell 8933 root 20 0 407304 60540 31072 S 1.2 3.2 0:32.09 X \`\`\` 不会显示空闲或无用的进程。 **\`top -n 3\`更新3次,完成后将会退出 top** \`\`\`shell \[root@localhost \~\]# top -n 3 \`\`\` 进程信息在更新3次后将退出监控。 **\`top -b\`** \`-b\`将以批处理模式显示程序信息,并且可以输出到文件中。 \`\`\`shell \[root@localhost test\]# top -n 1 -b \> a.txt \[root@localhost test\]# cat a.txt top - 09:33:58 up 1:17, 3 users, load average: 0.03, 0.03, 0.05 Tasks: 260 total, 1 running, 259 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.7 us, 1.4 sy, 0.0 ni, 97.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863032 total, 75452 free, 931548 used, 856032 buff/cache KiB Swap: 2097148 total, 2088692 free, 8456 used. 732568 avail Mem ..................省略部分输出.................. \`\`\` ##### 示例3:快捷键的使用 **在运行top的时候,可以按下快捷键进行操作。** - **1 - 当服务器有多个cpu的时候,可以使用"1"快捷键切换是否显示\`cpu\`的详细信息。** - s -- 改变画面更新频率 - **P -- 以 CPU 占用率大小的顺序排列进程列表** - **M -- 以内存占用率大小的顺序排列进程列表** - **q -- 退出 top** #### 6、\`du\`命令 **用途:** 查看目录的所占磁盘空间的大小 \`du\`命令的英文全称是\`Disk Usage\`,即用于查看磁盘占用空间的意思。但是与\`df\`命令不同的是\`du\`命令是对文件和目录磁盘使用的空间的查看,而不是某个分区。 **格式:** \`du \[选项\]... \[目录名\|文件名\]\` ##### 示例1:\`du \[目录名\|文件名\]\` **直接执行\`du\`** \`\`\`shell \[root@localhost \~\]# du 4 ./.cache/dconf 4 ./.cache/imsettings ..................省略部分输出.................. \`\`\` 当du不带参数时,显示当前文件下的文件的磁盘占用情况,只显示目录总占用量。 **查询指定目录或文件** \`\`\`shell \[root@localhost \~\]# du test 24 test \`\`\` ##### 示例2:\`du 参数\` **常用参数:** - \`-a\`参数:显示目录中所有文件大小 - \`-h\`参数:以K,M,G为单位,提高信息的可读性 - \`-s\`参数:仅显示总计,只列出最后加总的值 **\`du -a 目录名\|文件名\`** \`\`\`shell \[root@localhost \~\]# du -a test 24 test/a.txt 24 test \`\`\` **\`du -h 目录名\|文件名\`** \`\`\`shell \[root@localhost \~\]# du -h test/ 24K test/ \`\`\` **\`du -s 目录名\|文件名\`** \`\`\`shell \[root@localhost \~\]# du -s test 24 test \`\`\` ##### 案例 查询etc目录占用空间的大小? \`\`\`shell \[root@localhost \~\]# du -sh /etc 43M /etc \`\`\` #### 7、\`find\`命令 **用途:** 查找和搜索文件 \`find\`命令可以根据给定的路径和表达式查找的文件或目录。\`find\`参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。 **格式:** \`find \[查找路径\] \[参数 查找匹配条件\]\` ##### 示例1:\`find \[查找路径\]\` **列出当前目录及子目录下所有文件和文件夹** \`\`\`shell \[root@localhost \~\]# find . ./.bash_logout ./.bash_profile ..................省略部分输出.................. \`\`\` **列出指定目录下所有文件和文件夹** \`\`\`shell \[root@localhost \~\]# find ./test/ ./test/ ./test/a.txt \`\`\` ##### 示例2:\`find \[查找路径\] 参数 查找匹配条件\` **常用参数:** - \`-name\`参数:按照文件名查找文件 - \`-perm\`参数:按照文件权限来查找文件 - \`-user\`参数:按照文件所属用户来查找文件 - \`-group\`参数:按照文件所属的组来查找文件 - \`-size n\[cwbkMG\]\`参数:按指定文件大小查找 。其中后缀为: - b: 代表 512 位元组的区块(如果用户没有指定后缀,则默认为 b) - c: 表示字节数 - k: 表示 kilo bytes (1024字节) - w: 字 (2字节) - M:兆字节(1048576字节) - G: 千兆字节 (1073741824字节) - \`-type\`参数:查找某一类型的文件 - b - 块设备文件。 - d - 目录。 - c - 字符设备文件。 - p - 管道文件。 - l - 符号链接文件。 - f - 普通文件。 - s - socket文件 - \`-mtime -n +n\`参数:按照文件的更改时间(内容已经修改)来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。find命令还有-atime(访问时间)和-ctime(元数据被更改(例如权限))选项,但它们都和-mtime选项相似,这里不再介绍 - \`-exec\`参数:find命令对匹配的文件执行该参数所给出的其他linux命令。 - \`-delete (删除)\`:查找的文件删除(慎用) **使用\`-name\`参数查看\`/etc\`目录下面所有的\`.conf\`结尾的配置文件** \`\`\`shell \[root@localhost \~\]# find /etc -name \*.conf /etc/resolv.conf /etc/fonts/conf.d/65-0-khmeros-base.conf /etc/fonts/conf.d/61-urw-fallback-backwards.conf ..................省略部分输出.................. \`\`\` **使用\`-perm\`参数查看\`/etc\`目录下面所有的744权限的文件** \`\`\`shell \[root@localhost \~\]# find /etc -perm 744 /etc/bash_completion.d/gluster \[root@localhost \~\]# ll /etc/bash_completion.d/gluster -rwxr--r--. 1 root root 11521 10月 2 00:52 /etc/bash_completion.d/gluster \`\`\` **使用\`-user\`参数查看所属指定用户文件** \`\`\`shell \[root@localhost \~\]# find /home -user tiger /home/tiger /home/tiger/.mozilla /home/tiger/.mozilla/extensions /home/tiger/.mozilla/plugins /home/tiger/.bash_logout /home/tiger/.bash_profile /home/tiger/.bashrc \`\`\` **使用\`-group\`参数查找所属指定用户组文件** \`\`\`shell \[root@localhost \~\]# find /home -group tiger /home/tiger /home/tiger/.mozilla /home/tiger/.mozilla/extensions /home/tiger/.mozilla/plugins /home/tiger/.bash_logout /home/tiger/.bash_profile /home/tiger/.bashrc \`\`\` **使用-size参数查看\`/etc\`目录下面指定大小,大于提定大小,小于指定大小的文件** \`\`\`shell \[root@localhost \~\]# find /etc/ -size 4M /etc/selinux/targeted/policy/policy.31 /etc/selinux/targeted/active/policy.kern /etc/selinux/targeted/active/policy.linked \[root@localhost \~\]# find /etc/ -size +4M /etc/udev/hwdb.bin \[root@localhost \~\]# find /etc/ -size -1M /etc/crypttab /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem ..................省略部分输出.................. \`\`\` \> **注意:** 查询大于指定大小的文件用\`+\`号,小于指定大小的文件用\`-\`号 **按类型搜索超过5天以前被更新过的所有文件** \`\`\`shell \[root@localhost \~\]# find . -type f -mtime +5 ./.bash_logout ./.bash_profile ./.bashrc ./.cshrc \`\`\` **查找完成后使用\`exec\`执行\`stat\`命令查看文件具体信息** **命令格式:** \` 命令 {} \\;\`,注意\`{ }\`和\`\\;\`之间的空格。 \`\`\`shell \[root@localhost \~\]# find . -type f -mtime +5 -exec stat {} \\; 文件:"./.bash_logout" 大小:18 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:35649137 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:admin_home_t:s0 最近访问:2021-02-19 10:14:29.998797187 +0800 最近更改:2013-12-29 10:26:31.000000000 +0800 最近改动:2021-02-17 03:36:21.423002411 +0800 \`\`\` **组合使用案例:** \`-delete\` 将查询的文件删除 查询test目录下的b.txt文件并删除? \`\`\`shell \[root@localhost test\]# find .. -name b.txt ../test/b.txt \[root@localhost test\]# find .. -name b.txt -delete \[root@localhost test\]# find .. -name b.txt \[root@localhost test\]# \`\`\` **匹配多个条件中的一个,使用\`-o\`连接进行连接** 查询\`.sh\`后缀名的文件或是\`.txt\`后缀名的文件 \`\`\`shell \[root@localhost \~\]# find . \\( -name "\*.sh" -o -name "\*.txt" \\) ./.cache/tracker/db-version.txt ./.cache/tracker/db-locale.txt ./.cache/tracker/parser-sha1.txt ..................省略部分输出.................. \`\`\` **注意:** 查询条件要使用\`()\`进行包括,并且与内容之间要有空格,并需使用\`\\\`进行转义。 #### 8、\`service\`命令 **用途:** 控制系统服务 \`service\`命令用于对系统服务进行管理,比如启动(\`start\`)、停止(\`stop\`)、重启(\`restart\`)、重新加载配置(\`reload\`)、查看状态(\`status\`)等。 **格式:** \`service 服务 start\|stop\|restart\|status\` ##### 示例:使用service操作防火墙服务,进行关闭,启动,重启,查看状态。 **停止,查看状态** \`\`\`shell \[root@localhost \~\]# service firewalld stop Redirecting to /bin/systemctl stop firewalld.service \[root@localhost \~\]# service firewalld status Redirecting to /bin/systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since 五 2021-02-19 10:29:21 CST; 6s ago ..................省略部分输出.................. \`\`\` **启动,查看状态** \`\`\`shell \[root@localhost \~\]# service firewalld start Redirecting to /bin/systemctl start firewalld.service \[root@localhost \~\]# service firewalld status Redirecting to /bin/systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 五 2021-02-19 10:30:11 CST; 3s ago ..................省略部分输出.................. \`\`\` **重启服务** \`\`\`shell \[root@localhost \~\]# service firewalld restart Redirecting to /bin/systemctl restart firewalld.service \`\`\` #### 9、\`kill\`命令 **用途:** 杀死进程 \`kill\`命令可将指定的信号发送给相应的进程或工作。 \`kill\`命令默认使用信号为\`15\`,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号\`9\`,强制杀死进程或作业。 **格式:** \`kill \[选项\]... 进程PID\` ##### 示例1:使用\`kill pid\`杀死防火墙进程 ① 使用\`ps\`命令查询到防火墙进行的\`pid\` \`\`\`shell \[root@localhost \~\]# ps -ef \| grep firewalld root 67058 1 1 10:31 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid root 67250 12829 0 10:31 pts/1 00:00:00 grep --color=auto firewalld \`\`\` ② 使用\`kill pid\`杀死进程 \`\`\`shell \[root@localhost \~\]# kill 67058 \[root@localhost \~\]# ps -ef \| grep firewalld root 67340 12829 0 10:32 pts/1 00:00:00 grep --color=auto firewalld \`\`\` ③ 当进程无法杀死时,可使用信号\`9\`强制杀死 \`\`\`shell \[root@localhost \~\]# kill -9 67457 \[root@localhost \~\]# ps -ef \| grep firewalld root 67620 12829 0 10:34 pts/1 00:00:00 grep --color=auto firewalld \`\`\` ##### 示例2:按服务名删除 每次查询pid太麻烦,可使用**\`killall\`** 命令通过服务名杀死相应进程。 \`\`\`shell \[root@localhost \~\]# ps -ef \| grep firewalld root 67058 1 1 10:31 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid root 67250 12829 0 10:31 pts/1 00:00:00 grep --color=auto firewalld \[root@localhost \~\]# killall -9 firewalld \[root@localhost \~\]# ps -ef \| grep firewalld root 67792 12829 0 10:35 pts/1 00:00:00 grep --color=auto firewalld \`\`\` #### 10、\`ifconfig\`命令 **用途:** 用于获取网卡配置与网络状态等信息 使用\`ifconfig\`命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、\`inet\`参数后面的\`IP\`地址、\`ether\`参数后面的\`网卡物理地址\`(又称为\`MAC\`地址),以及\`RX\`、\`TX\`的接收数据包与发送数据包的个数及累计流量 **格式:** \`ifconfig \[选项\]\` ##### 示例1:查询网卡信息 !\[image\](img/1.png) ##### 示例2:查看指定网卡信息(查看ens33) \`\`\`shell \[root@localhost \~\]# ifconfig ens33 ens33: flags=4163 mtu 1500 inet 192.168.163.137 netmask 255.255.255.0 broadcast 192.168.163.255 inet6 fe80::c3d8:243:7abb:921c prefixlen 64 scopeid 0x20 ether 00:0c:29:71:74:0a txqueuelen 1000 (Ethernet) RX packets 369421 bytes 534133011 (509.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 56127 bytes 3446720 (3.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 \`\`\` ##### 示例3:启动,停止网卡 **启动\`ifconfig 网卡名 up\`** \`\`\`shell \[root@localhost \~\]# ifconfig ens33 up \`\`\` 为了简化操作可使用\`ifup 网卡名\`命令来启动 \`\`\`shell \[root@localhost \~\]# ifup ens33 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7) \`\`\` **停止\`ifconfig 网卡名 down\`** \`\`\`shell \[root@localhost \~\]# ifconfig ens33 down \`\`\` 为了简化操作可使用\`ifdown 网卡名\`命令来停止 \`\`\`shell \[root@localhost \~\]# ifdown ens33 成功断开设备 "ens33"。 \`\`\` #### 11、\`last\`命令 **用途:** 查看所有系统的登录记录 **格式:** \`last\` ##### 示例:查看所有登录记录 \`\`\`shell \[root@localhost \~\]# last root pts/1 :0 Fri Feb 19 08:44 still logged in root pts/1 :0 Wed Feb 17 00:14 - 00:14 (00:00) root pts/1 :0 Wed Feb 17 00:13 - 00:14 (00:00) root pts/1 :0 Wed Feb 17 00:11 - 00:13 (00:01) root pts/0 :0 Wed Feb 17 00:10 - 10:59 (2+10:48) root :0 :0 Tue Feb 16 19:51 still logged in reboot system boot 3.10.0-1160.el7. Wed Feb 17 03:40 - 10:59 (2+07:19) \`\`\` \> 使用\`last\`命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵! #### 12、\`reboot\`命令 **用途:** 重启计算机 **格式:** \`reboot\` 系统会讲开机与关机的数据写入\`/var/log\`目录下的\`wtmp\`记录文件。 可使用\`-w\`参数进行重启测试,并不真的将系统重新开机,只会将数据写入记录文件。 \`\`\`shell \[root@localhost \~\]# reboot -w \[root@localhost \~\]# tail /var/log/wtmp \~\~\~reboot3.10.0-1160.el7.x86_64�,\`�5\~\~\~runlevel3.10.0-1160.el7.x86_64ذ+\`�� �$:0root:0ޱ+\`�!�,pts/0/0root:0��+\`��,pts/1/1root:0��+\`��pts /1/1root9�+\`\^;�,pts/1/1root:0\>�+\`!pts/1/1rootS�+\`y��,pts/ 1/1root:0U�+pts/1/1root\[�+\`!��,pts/1/1root:0� \`\`\` #### 13、\`shutdown\`命令 **用途:** 以一种安全的方式关闭系统。 所有登陆用户都可以看到关机信息提示,并且\`login (1) \`将被阻塞。可以指定立刻关机,也可以指定系统在一定的延时后关机。所有进程都将接收到\`SIGTERM(终止进程)\`信号。 **格式:** \`shutdown \[选项\]\` 常用参数: - \`-k\`参数:并非真正关机,只向所有人显示警告信息 - \`-r\`参数:重启。 - \`-h\`参数:停机。 ##### 事例1:测试\`-k\` \`\`\`shell \[root@localhost \~\]# shutdown -k Shutdown scheduled for 五 2021-02-19 10:46:27 CST, use 'shutdown -c' to cancel. \[root@localhost \~\]# Broadcast message from root@localhost.localdomain (Fri 2021-02-19 10:45:27 CST): The system is going down for power-off at Fri 2021-02-19 10:46:27 CST! \`\`\` 并不会真的关机,只是向所有人显示警告信息。 ##### 事例2:立即关机:\`shutdown -h now\` ##### 事例3:延时关机 **下午两点关机** \`\`\`shell \[root@localhost \~\]# shutdown -h 12:00 Shutdown scheduled for 五 2021-02-19 12:00:00 CST, use 'shutdown -c' to cancel. \`\`\` 可使用\`shutdown -c\`命令取消。 **两分钟后关机** \`\`\`shell \[root@localhost \~\]# shutdown -h +2 Shutdown scheduled for 五 2021-02-19 10:50:36 CST, use 'shutdown -c' to cancel. \`\`\` ##### 事例4:延时重启 **在两分钟后重启** \`\`\`shell \[root@localhost \~\]# shutdown -r +2 Shutdown scheduled for 五 2021-02-19 10:51:58 CST, use 'shutdown -c' to cancel. Broadcast message from root@localhost.localdomain (Fri 2021-02-19 10:49:58 CST): The system is going down for reboot at Fri 2021-02-19 10:51:58 CST! \`\`\` \> **注意:** \`shutdwon\`命令与\`poweroff\`一定要慎用,在学习阶段可以使用,但是在生产环境中,linux系统一般都是做服务器使用,并且一般都布署在远程端口,所以当不小心使用关机命令将系统关机后,就无法像在本地那样轻松的再次开机了,这是非常麻烦的一件事情。所以在生产环境中,如果服务器关机开机操作,一般都使用\`reboot\`进行重启操作。 #### 14、\`uptime\`命令 **用途:** 查看系统负载 \`uptime\`命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的\`1\`分钟、\`5\`分钟和\`15\`分钟内的平均负载。负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。 **格式:** \`uptime \[参数\]\` **常用参数:** - \`-p\`参数:以易读的格式显示机器正常运行的时间 - \`-s\`参数:系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss ##### 示例1:\`uptime \` \`uptime\`命令用法十分简单,直接输入uptime即可查看系统负载情况。 \`\`\`shell \[root@localhost \~\]# uptime 10:50:46 up 2:12, 3 users, load average: 0.03, 0.04, 0.05 \`\`\` ##### 示例2:使用\`-p\`参数显示机器正常运行的时间 \`\`\`shell \[root@localhost \~\]# uptime -p up 2 hours, 13 minutes \`\`\` ##### 示例3:使用\`-s\`参数显示机器启动时间 \`\`\`shell \[root@localhost \~\]# uptime -s 2021-02-19 08:38:31 \`\`\` #### 15、\`uname\`命令 **用途:** 用于查看系统内核与系统版本等信息 **格式:** \`uname \[-a\]\` \`\`\`shell \[root@localhost \~\]# uname -a Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux \`\`\` 在使用\`uname\`命令时,一般会固定搭配上\`-a\`参数来完整地查看当前系统的\`内核名称\`、\`主机名\`、\`内核发行版本\`、\`节点名\`、\`版本号\`、\`机器(硬件)类型\`、\`硬件平台\`、\`处理器类型\`以及\`操作系统名称\`等信息。 了解:如果要查看当前系统版本的详细信息,则需要查看\`redhat-release\`文件,其命令以及相应的结果如下: \`\`\`shell \[root@localhost \~\]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) \`\`\` #### 16、\`netstat\`命令 **用途:** 显示网络状态 \`netstat\`命令用于显示各种网络相关信息,如显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组。 **格式:** \`netstat \[参数\]\` **常用参数:** - \`-t\`参数:显示所有\`tcp\`协议的网络相关信息 - \`-n\`参数:显示数字(ip)形式地址而不是去解析主机、端口或用户名 - \`-l\`参数:只显示正在侦听的套接字(这是默认选项) - \`-p\`参数:显示套接字所属进程的\`PID\`和\`程序名称\` ##### 综合应用:查看\`TCP\`协议,并且正在侦听的套接字的网络相关内容 \`\`\`shell \[root@localhost \~\]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:\* LISTEN 845/rpcbind tcp 0 0 192.168.122.1:53 0.0.0.0:\* LISTEN 1885/dnsmasq \`\`\` **其中:** - \`proto\`:网络连接协议 - \`Recv-Q\`:连接此套接字的用户程序未拷贝的字节数。 - \`Send-Q\`:远程主机未确认的字节数。 - \`Local Address\`:套接字的本地地址(本地主机名)和端口号。 - \`Foreign Address \`:套接字的远程地址(远程主机名)和端口号。 - \`State\`:套接字的状态。详细状态请使用\`man\`命令查询 - \`PID/Program name\`:处理套接字进程的\`PID\`和\`进程名称\` --- ### 作业 #### 1、如何通过命令行重启linux操作系统? 可使用\`shutdown -r \`命令重启操作系统,也可以使用\`reboot\`命令,生产环境中建议使用\`reboot\`命令重启,\`shutdown\`命令时,如果参数 \`-r\`未输或输错,将会造成系统关机,在开机是件很麻烦的事情,因为生产环境系统都布属在远程终端上。 #### 2、如何在命令行中快速删除光标前/后的内容? - 删除之前的:ctrl+u - 删除之后的:ctrl+k #### 3、如何删除/tmp下所有A开头的文件? 使用\`find\`命令查询出所有带\`A\`开头的文件,同时加上\`-delete\`参数即可。命令如下:\`find /tmp -iname "A\*" -delete\`。\`iname\`是忽略大小写。 #### 4、系统重要文件需要备份,如何把/etc/passwd备份到/tmp目录下? 使用\`cp\`命令进行备份。备份时可改变名称,也可以使用原有名称。命令如下:\`cp /etc/passwd /tmp/passwd备份\`。 #### 5、如何查看系统最后创建的3个用户? 使用tail命令查看最后三行的内容。命令如下:\` tail -3 /etc/passwd\` #### 6、什么命令可以统计当前系统中一共有多少账户? wc命令可以统计,命令如下:\`wc -l /etc/passwd\` #### 7、如何创建/tmp/test.conf文件? 使用touch命令创建,命令如下:\`touch /tmp/test.conf\`; #### 8、如何通过vim编辑打开/tmp/test.conf? \`vim /tmp/test.conf\`。 #### 9、如何查看/etc/passwd的头3行和尾3行? - 头三行:使用\`head\`,命令如下:\`head -3 /etc/passwd\` - 尾三行:使用\`tail\`,命令如下:\`tail -3 /etc/passwd\` #### 10、如何一次性创建目录/text/1/2/3/4? 使用\`mkdir -p /text/1/2/3/4\`创建 #### 11、如何最快的返回到当前账户的家目录? 直接输入\`cd\`命令回车即可,或者使用\`cd \~\`。 #### 12、如何查看/etc所占的磁盘空间? \`du -sh /etc\` #### 13、删除/tmp下的所有文件 - \`rm -rf /temp/\*\`
原创
3-Linux的命令-2
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法