【全球独家】第03章-linux常用命令
上一章:第02章-vmware安装centos7系统
我们知道操作系统管理硬件,操作系统向上会提供统一的接口,而shell就是用户和操作系统通话的中间人,shell会将用户输入的命令解释给操作系统接口从而来管理和调用各种硬件。操作系统的核心是内核(kernel),而shell就是包围在内核外面的一层“壳”如下图(图-2-1),同时这个“壳”也可以调用其它应用。
(相关资料图)
图-2-1
常说的shell通常指shell脚本,shell脚本就是由一行行命令组成,shell编程只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
常见的shell有:Bourne Shell(/usr/bin/sh或/bin/sh),Bourne Again Shell(/bin/bash),C Shell(/usr/bin/csh),K Shell(/usr/bin/ksh)。
查看当前使用的shell[root@cdphost ~]# echo $SHELL/bin/bash
接下来看Linux常用命令:
man
作用:查看命令的使用方法。
[root@cdphost ~]# man ls
reboot
作用:重启操作系统。
[root@cdphost ~]# reboot
shutdown
作用:关闭操作系统。
[root@cdphost ~]# shutdown
常见目录操作命令:
ls
作用:列出目录和文件信息,默认列出当前目录下的信息。
语法:ls [选项] [文件或者目录]。
ls选项说明:
选项 | 说明 |
-l | 列表形式显示 |
-a | 显示所有文件包括隐藏文件 |
-A | 显示所有文件包括隐藏文件但是不包括.和.. |
-h | 显示合适的文件大小 |
-t | 按文件创建时间的由近到远显示 |
-r | 倒叙列出文件 |
[root@cdphost ~]# ls -ltotal 4194316-rw-------. 1 root root 1808 Dec 15 2022 anaconda-ks.cfg-rw------- 1 root root 1908 Jun 19 16:56 dead.letterdrwxr-xr-x. 2 root root 6 Dec 15 2022 Desktopdrwxr-xr-x. 2 root root 6 Dec 15 2022 Documents... ...
pwd
作用:查看当前路径。
[root@cdphost ~]# pwd/root
cd
作用:切换目录。
语法:cd <目录名称>。
目录名称说明:
目录名称 | 说明 |
. | 当前目录 |
.. | 上级目录 |
~ | Home目录 |
- | 上次访问目录 |
绝对路径 | 例如:/home/cdp |
[root@cdphost ~]# cd /usr/bin[root@cdphost bin]# pwd/usr/bin
mkdir
作用:创建目录。
语法:mkdir [选项] <目录名称>。
mkdir选项说明:
选项 | 说明 |
-p | 确保上级目录存在,不存在的就建一个 |
[root@cdphost ~]# mkdir -p /root/temp1/temp2[root@cdphost ~]# cd /root/temp1/temp2/[root@cdphost temp2]# pwd/root/temp1/temp2
rm
作用:删除文件或者目录。
语法:rm [选项] <文件名称/目录名称>。
rm选项说明:
选项 | 说明 |
-r | 递归删除 |
-f | 强制删除 |
[root@cdphost temp2]# pwd/root/temp1/temp2[root@cdphost temp2]# cd ~[root@cdphost ~]# pwd/root[root@cdphost ~]# rm -rf temp1[root@cdphost ~]#
rename
作用:文件重命名。
语法:rename 源字符串 目标字符串 文件。
[root@cdphost temp1]# lsaaa aaabbb.txt dddaaa.txt[root@cdphost temp1]# rename aaa bbb aaabbb.txt[root@cdphost temp1]# lsaaa bbbbbb.txt dddaaa.txt[root@cdphost temp1]#
mv
作用:移动文件或者文件重命名。
语法:mv <源文件名> <目标文件名>。
例1:/root/temp1/aaa目录移动到/root/temp2目录下。
[root@cdphost temp1]# mv /root/temp1/aaa /root/temp2
例2:/root/temp1/aaa目录下所有文件移动到/root/temp2目录下。
[root@cdphost temp1]# mv /root/temp1/aaa/* /root/temp2/bbb
例3:/root/temp2目录下bbb文件名重命名为ccc文件名。
[root@cdphost temp2]# mv /root/temp2/bbb /root/temp2/ccc
cp
作用:复制文件或者目录到其它目录下。
语法:cp <源文件名或者目录> <目标>。
cp选项说明:
选项 | 说明 |
-r | 复制当前文件及其子目录和文件 |
例1:/root/temp1/aaa目录复制到/root/temp2/ccc目录下。
[root@cdphost ccc]# cp -r /root/temp1/aaa /root/temp2/ccc
例2:/root/temp1/aaa目录下所有文件复制到/root/temp2/ccc目录下。
[root@cdphost ccc]# cp -r /root/temp1/aaa/* /root/temp2/ccc
常见文件操作命令:
touch
作用:创建文件。
[root@cdphost temp1]# lltotal 0[root@cdphost temp1]# touch a.txt[root@cdphost temp1]# lltotal 0-rw-r--r-- 1 root root 0 Jun 25 23:00 a.txt
cat
作用:查看文件内容,适合小文件。
[root@cdphost temp1]# cat /etc/passwd
more
作用:查看文件内容,适合大文件。
[root@cdphost temp1]# more /etc/passwd
head
作用:查看文件前几行内容,默认10行。
语法:head [选项] 文件名称。
head选项说明:
选项 | 说明 |
-n | 显示的行数 |
例1:查看/etc/group的前5行。
[root@cdphost temp1]# head -n 5 /etc/grouproot:x:0:bin:x:1:daemon:x:2:sys:x:3:adm:x:4:
tail
作用:查看文件后几行内容,默认10行。
语法:tail [选项] 文件名称。
tail选项说明:
选项 | 说明 |
-n | 显示的行数 |
-f | 实时读取 |
例1:查看/etc/group的后5行。
[root@cdphost temp1]# tail -n 5 /etc/grouptcpdump:x:72:stapusr:x:156:stapsys:x:157:stapdev:x:158:cdp:x:1000:cdp
例2:实时查看/root/cdp.txt的内容。
[root@cdphost ~]# tail -f cdp.txt788
wc
作用:统计文件行数,字数,字节数。
语法:wc [选项] 文件名称。
wc选项说明:
选项 | 说明 |
-l | 显示行数 |
-w | 显示字数 |
-c | 显示字节数 |
例1:查看/etc/passwd文件行数。
[root@cdphost ~]# wc -l /etc/passwd43 /etc/passwd
例2:查看/etc/passwd文件字数。
[root@cdphost ~]# wc -w /etc/passwd87 /etc/passwd
例3:查看/etc/passwd文件字节数。
[root@cdphost ~]# wc -c /etc/passwd2256 /etc/passwd
du
作用:显示文件或者目录的大小。
语法:dd 选项。
du选项说明:
选项 | 说明 |
-h | 合理的大小显示文件或者目录大小 |
-s | 只显示总计 |
-b | 以byte为单位显示文件或者目录大小 |
-m | 以M为单位显示文件或者目录大小 |
-k | 以K为单位显示文件或者目录大小 |
例1:合理单位显示当前目录空间大小。
[root@cdphost temp1]# du -sh3.5G .
例2:合理单位显示当前目录下所有子文件或者目录空间大小。
[root@cdphost temp1]# du -sh *100K 100K_temp.txt100M 100M_temp.txt1.0G 1G_temp.txt4.0K 2048_temp.txt2.4G a
例3:合理单位显示指定文件空间大小。
[root@cdphost temp1]# du -sh /root/temp1/a2.4G /root/temp1/a
例4:显示指定文件空间大小到字节,不显示名称。
[root@cdphost temp1]# du -sh /root/temp1/a | cut -f12.4G[root@cdphost temp1]# du -sh /root/temp1/a | awk "{print $1}"2.4G
find
作用:指定目录下查找文件。
语法:find path -option [-print ] [ -exec -ok command ] {} \;。
find选项说明:
选项 | 说明 |
-name | 文件名称查找 |
-type | 文件类型查找,f:表示一般文件 |
-size | 文件大小查找 |
例1:查找系统所有名字以.c结尾的文件。
[root@cdphost temp1]# find / -name "*.c"/usr/lib/firmware/isci/create_fw.c/usr/lib64/perl5/vendor_perl/auto/share/dist/DBD-SQLite/sqlite3.c/usr/share/doc/libpng-1.5.13/example.c/usr/share/doc/mpfr-3.1.1/mpfr/examples/divworst.c/usr/share/doc/mpfr-3.1.1/mpfr/examples/rndo-add.c/usr/share/doc/mpfr-3.1.1/mpfr/examples/sample.c/usr/share/doc/mpfr-3.1.1/mpfr/examples/version.c/usr/share/doc/libbluray-0.2.3/player_wrappers/xine/input_bluray.c
例2:查找指定目录下大于100M的文件,并且详细列出。
[root@cdphost temp1]# find /root/temp1 -size +100M -exec ls -lh {} \;-rw-r--r--. 1 root root 1.0G Dec 23 12:34 /root/temp1/1G_temp.txt-rw-r--r--. 1 root root 2.0G Dec 23 12:51 /root/temp1/a/temp.txt-rw-r--r--. 1 root root 400M Dec 23 12:53 /root/temp1/a/b/100M_temp.txt
grep
作用:文本搜索。
语法:grep [参数选项] [匹配模式] file。
grep参数选项说明:
选项 | 说明 |
-v | 排除匹配结果 |
-n | 打印行号 |
-c | 只统计匹配的行数 |
-r | 递归查找 |
例1:查找指定目录下文件内容包含hello的行打印出来且打印行号。
[root@cdphost temp1]# grep "hello" /root/temp1 -rn/root/temp1/b.txt:3:asdfsaf hello/root/temp1/c/c.txt:10:hello hello/root/temp1/a.txt:6:abc hello/root/temp1/a.txt:7:hello cdb
例2:查找指定目录下文件内容包含hello的文件且打印总行数。
[root@cdphost temp1]# grep "hello" /root/temp1 -rc | grep ":0" -v/root/temp1/b.txt:1/root/temp1/c/c.txt:1/root/temp1/a.txt:2
例3:查找指定目录下文件内容包含hello的文件。
[root@cdphost temp1]# grep "hello" /root/temp1 -rc | grep ":0" -v | cut -d ":" -f1/root/temp1/b.txt/root/temp1/c/c.txt/root/temp1/a.txt
例4:查找指定文件的空行且打印行号。
[root@cdphost temp1]# grep "^#34; /root/temp1/a.txt -n3:5:
说明:linux文件下所有文件结尾都有一个$符。你可以执行cat -A /root/temp1/a.txt查看。
例5:找到只有java的进程。
[root@cdphost temp1]# ps -ef | grep java | grep -v grep
常见系统命令:
date
作用:显示或者设置系统日期。
语法:date [参数选项] [+显示格式]。
date参数选项说明:
选项 | 说明 |
-s datestr | 系统时间设置为datestr |
date显示格式说明:
选项 | 说明 |
%Y | 年份 (0000..9999) |
%m | 月份 (01..12) |
%d | 日 (01..31) |
%H | 小时(00..23) |
%M | 分钟(00..59) |
%S | 秒(00..59) |
%A | 星期几 (Sunday..Saturday) |
%j | 年中的第几天 |
例1:输出如下格式时间:[yyyy-mm-dd hh:mm:ss]。
[root@cdphost temp1]# date "+%Y-%m-%d %H:%M:%S"2022-12-23 15:48:40
例2:显示今天星期几。
[root@cdphost temp1]# date "+%A"Friday
例3:将系统时间设置为20211231 9:00:00。
[root@cdphost temp1]# date -s "2021-12-31 9:00:00"
ifconfig
作用:查看IP地址。
[root@cdphost temp1]# ifconfig
df
作用:显示文件系统磁盘使用情况。
语法:df [参数选项]。
df参数选项说明:
选项 | 说明 |
-T | 显示文件系统类型 |
-h | 合理的显示值大小 |
例1:查看文件系统磁盘使用情况。
输出说明:
Filesystem:文件系统
Size:文件系统的可用空间的总大小
Used:已用空间量
Avail:可用空间量
Use%:已用空间量,表示为总容量的百分比
Mounted on:挂载点
free
作用:显示文件系统磁盘使用情况。
语法:free [参数选项]。
free参数选项说明:
选项 | 说明 |
-h | 合理的显示值大小 |
-m | 以M为单位显示内存信息 |
例1:查看系统内存使用情况。
输出说明:
total:服务器内存总大小
used:已经使用了多少内存
free:未被任何应用使用的真实空闲内存
shared:被共享的物理内存
buff/cache:缓冲、缓存区内存数
available:真正剩余的可被程序应用的内存数
top
作用:动态显示系统进程信息。
[root@cdphost temp1]# top
输出信息说明:
第一行:top - 22:42:52 up 42 min, 2 users, load average: 0.13, 0.09, 0.12
当前时间是22:42:52,启动了42分钟, 2个用户在线,1分钟,5分钟,15分钟的平均负载情况是:0.13, 0.09, 0.12。
load average(平均负载):是系统CPU繁忙程度的度量,反应的是一段时间内系统的平均负载(1分钟,5分钟,15分钟)
第二行:Tasks: 492 total, 1 running, 491 sleeping, 0 stopped, 0 zombie
进程总数492,运行中的进程数为1(正在为用户提供服务),睡眠中的进程数491(等待提供服务),停止的进程数0(stopped下,可以kill),僵死的进程数0(不为用户提供服务了)
第三行:%cpu(s): 7.2 us, 1.4 sy, 0.0 ni, 91.3 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
7.2% us — 用户空间占用CPU的百分比。
1.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
91.3 % id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.2% si — 软中断(Software Interrupts)占用CPU的百分比
0.0% st— 虚拟机占用CPU的百分比
在这里CPU的使用比率和windows概念不同,操作系统和驱动程序运行在内核空间,应用程序运行在用户空间
第四行:KiB Mem: 2035648 total, 888272 used, 1147376 free, 884 buffers
2035648k total — 物理内存总量(2035M)
888272k used — 使用中的内存总量(888M)
1147376k free — 空闲内存总量(1147M)
884k buffers — 缓存的内存量 (0.8M)
第五行:KiB Swap: 2097148 total, 0 used, 2097148 free. 255104 cached Mem
swap交换分区
2097148k total — 交换区总量(2097M)
0k used — 使用的交换区总量(0M)
2097148 k free — 空闲交换区总量(2097M)
255104k cached — 缓冲的交换区总量(255M)
当第五行的used在不断的变化的时候,说明系统在不断的进行着内存和交换分区的数据交换,此时内存可能不够用了。
第七行:如下表格所示
标题 | 说明 |
PID | 进程ID |
USER | 进程所有者 |
PR | 进程的调度优先级。这个字段的一些值是"rt"。这意味这这些进程运行在实时态。 |
NI | 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | SHR是进程使用的共享内存。共享内存大小,单位kb |
S | 进程的状态,它有以下不同的值: D - 不可中断的睡眠态。 R – 运行态 S – 睡眠态 T – 被跟踪或已停止 Z – 僵尸态 |
%CPU | 自从上一次更新时到现在任务所使用的CPU时间百分比。 |
%MEM | 进程使用的可用物理内存百分比。 |
TIME+ | 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。 |
COMMAND | 运行进程所使用的命令。进程名称(命令名/命令行) |
who
作用:显示正在登陆的系统用户。
例:显示正在登陆的系统用户。
输出信息说明:
NAME:登录用户名称。
LINE:用户登录终端。pts/0表示虚拟终端。:0表示x显示器(x-window)。
TIME:用户登录时间。
COMMENT:用户登录的主机名或者IP。
whoami
作用:显示正在登陆的系统用户。
例:显示当前登录的用户。
[root@cdphost ~]# whoamiroot
ps
作用:显示系统进程信息。
语法:ps [参数选项]。
ps参数选项说明:
选项 | 说明 |
-e | 显示所有进程(包含没有控制终端的进程) |
-f | 显示完整的格式输出 |
例1:显示所有进程且取前5行。
例2:显示所有java进程。
[root@cdphost ~]# ps -ef | grep java | grep -v grep
kill
作用:杀死进程。
例1:杀死单个进程。
[root@cdphost ~]# kill -9 进程号
例2:杀死多个进程。
[root@cdphost ~]# kill -9 进程号1 进程号2 进程号3 ……
which
作用:查找命令系统位置。
例1:查看pwd命令文件。
[root@cdphost ~]# which pwd/usr/bin/pwd
wget
作用:下载文件。
例1:下载centos7的163的yum源。
[root@cdphost temp1]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
su
作用:切换系统用户。
语法:su [-] 用户名。
补充说明:
su 用户名称 --表示切换为新用户身份,保留原用户身份环境变量。
su - 用户名称 --表示切换为新用户身份,更新为新用户身份环境变量。
例1:执行su 用户名称命令,查看PATH环境变量变化情况。
例2:执行su - 用户名称命令,查看PATH环境变量变化情况。
sudo
作用:以管理者的身份执行指令。
语法:sudo 系统命令。
sudo权限修改方式:
方式1:执行命令visudo。
方式2:编辑/etc/sudoers文件(注意:需要执行chmod u+w /etc/sudoers)。
配置文件(/etc/sudoers)说明
visudo格式 | 说明 |
cdp ALL=(ALL) ALL | 允许用户cdp执行sudo命令(需要输入密码) |
%cdp ALL=(ALL) ALL | 允许用户组cdp里面的用户执行sudo命令(需要输入密码) |
cdp ALL=(ALL) NOPASSWD:ALL(出于方便,推荐使用此设置) | 允许用户cdp执行sudo命令,并且在执行的时候不输入密码 |
%cdp ALL=(ALL) NOPASSWD:ALL | 允许用户组cdp里面的用户执行sudo命令,并且在执行的时候不输入密码 |
第一个ALL的位置表示:使用sudo的主机,例如:192.168.226.250/24。
第二个ALL的位置表示:以谁的身份执行命令。
第三个ALL的位置表示:可以执行的命令。
例1:cdp用户以sudo命令的方式关闭防火墙。
第1步:执行visudo命令,编辑/etc/sudoers。
[root@cdphost ~]# visudo --修改/etc/sudoers
第2步:执行关闭防火墙命令
[cdp@cdphost ~]$ sudo systemctl stop firewalld
history
作用:显示曾经使用过的命令。
例1:显示最近执行过的10行命令。
[root@cdphost ~]# history | tail -n 10951 echo $PATH952 systemctl status firelwalld953 systemctl status firewalld954 visudo955 cat /etc/sudoers956 vi /etc/sudoers957 ll /etc/sudoers958 visudo959 history960 history | tail -n 10
例2:执行历史执行过的命令。
[root@cdphost ~]# !951echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
scp
作用:远程linux系统之间复制文件。
语法:跨服务器文件复制。
1.从本地复制到远程。scp [参数选项] local_file remote_username@remote_ip:remote_file2.从远程复制到本地。scp [参数选项] remote_username@remote_ip:remote_file local_file
scp选项说明:
选项 | 说明 |
-r | 递归复制整个目录 |
例1:文件或者目录从本地复制到远程。
[root@cdphost temp1]# scp 100M_temp.txt root@192.168.226.101:/root/temp3[root@cdphost temp1]# scp -r /root/temp2 root@192.168.226.101:/root/temp3
例2:文件或者目录从远程复制到本地。
[root@cdphost temp4]# scp root@192.168.226.101:/root/temp3/100M_temp.txt ./[root@cdphost temp4]# scp -r root@192.168.226.101:/root/temp3/temp2 ./
压缩和打包命令
gzip
作用:压缩文件。
语法:gzip [参数选项] [文件…]。
gzip参数选项说明:
选项 | 说明 |
-d | 解开压缩文件 |
-l | 列出压缩文件信息 |
-v | 显示指令执行过程 |
例1:压缩当前目录下所有文件。
例2:查看压缩文件信息。
例3:解压缩文件。
tar
作用:打包文件或者打包压缩文件或者解打包文件或者解打包压缩文件。
语法:tar [参数选项] [备份文件包名] […..]。
tar参数选项说明:
选项 | 说明 |
-c | 创建新的备份文件 |
-v | 显示执行过程 |
-f | 指定备份文件名称 |
-x | 解压备份文件 |
-z | 通过gzip压缩文件,一般命名后缀.gz |
-t | 列出备份文件内容 |
-C | 指定解压目录 |
注意:-c和-x选项不可以同时出现。
linux3种压缩方式:
参数 | 压缩方式 | 命名方向 | 说明 |
-z | gzip压缩 | 文件名.tar.gz | 压缩速度:gz > bz2 > xz 压缩率:xz > bz2 > gz |
-j | bzip2压缩 | 文件名.tar.bz2 | |
-J | xz压缩 | 文件名.tar.xz |
例1:打包当前目录下所有文件。
例2:解打包文件。
例3:解打包文件到指定文件夹。
例4:打包压缩文件,解打包压缩文件。
例5:分卷打包压缩。
例6:解分卷打包压缩。
zip
作用:打包压缩文件。
语法:zip [参数选项] [压缩文件名称.zip] [文件1……]。
zip参数选项说明:
选项 | 说明 |
-q | 不显示指令执行过程 |
-r | 递归处理,目录以及子目录一并处理 |
例1:打包当前目录下所有文件。
unzip
作用:解压缩文件。
语法:uzip [参数选项] [压缩文件名称.zip]。
uzip参数选项说明:
选项 | 说明 |
-l | 显示压缩包文件内容 |
-d | 指定解压缩文件目录 |
例1:解压文件到指定目录。
关键词: