Linux基础知识(常用命令史上最全版)
前言
至于为什么重新写Linux笔记,之前作为Java攻城狮,学的太片面,重新整理以前的笔记,打造更好的,学习更高深的技术,挣更多的money
常见目录
目录名 | 目录作用 |
---|---|
/bin/ | 存放系统命令的目录, 普通用户和超级用户都可以执行 |
/sbin/ | 保存和系统环境设置相关的命令,大多数命令只有超级命令才可以使用 |
/usr/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行 |
/usr/sbin/ | 保存和系统环境设置相关命令,大多数命令只有超级用户才可以使用 |
/boot/ | 系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置。Linux系统下,硬件设备都已文件的形式存在。我们把硬件与系统下相关的文件称为设备文件。设备文件在Linux系统下保存在/dev/下 |
/etc/ | 配置文件保存位置,系统内所有默认安装方式的服务的配置文件全部都保存在这个目录下,如用户信息文件/etc/passwd等 |
/root/ | 超级用户家目录,普通用户家目录在/home/下,超级用户家目录在 / 下 |
/home/ | 普通用户家目录,建立每个用户时,每个用户都要有一个默认登陆未知,在Linux系统中,每个用户都有自己的一个目录,一般有用户的账号命名。 |
/lib/ | 系统调用的函数库保存位置,该目录中存放的是共享程序库和映像文件,可供很多程序使用。通过共享这些映射文件,每个程序就不必分别保存自己的库文件,Linux提供了一组可供所有程序使用的文件 |
/lost+found/ | 如果使用标准的ext2、ext3、ext4文件系统格式的分区就会产生这个目录。作用在于当问及那系统发生错误时,将一些遗失的片段放到这个目录下,但是如果使用xfs文件系统就不会产生这个目录 |
/media/ | 挂载目录。系统见用来挂载媒体设备的,例如软盘和光盘 |
/mnt/ | 挂载目录,早期Linux中只有这一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘,移动硬盘和其他操作系统区分 |
/misc/ | 挂载目录,系统建议用来挂载NFS服务的共享目录,系统虽然准备三个默认挂载目录/media/./mnt/,/misc/,但到底那个目录中挂载什么设备都可以由管理员决定 |
/opt/ | 第三方安装的软件保存未知,这个目录就是防止和安装其他软件的位置,我们手工安装的源码包软件都可以安装到这个目录下 |
/proc/ | 虚拟目录,目录中所有信息都是内存的映射。通过这个虚拟的内存映射目录,可以和内核内部数据结构进行交互,获取有关进程的信,同时也可以在系统运行中修改内核参数。与其他目录不同,/proc存在于内存中,而不是硬盘上 |
/proc/cpuinfo | 关于系统CPU的详细信息,包括CPU名称、型号和类型等 |
/proc/meminfo | 内存信息、包括物理内存和虚拟内存 |
/proc/filesystems | 当前系统支持的文件系统类型 |
/proc/net/ | 网络使用协议以及状态信息 |
/sys/ | 虚拟文件系统,和/proc类似,都是保存在内存当中的,主要是保存内核相关信息的 |
/tmp/ | 临时文件目录,系统存放临时文件的目录,该目录下所有用户都可以访问和写入,一般建议此目录中保存重要数据,这些临时文件可能随时被删除 |
/usr/ | 此目录主要用于存放应用程序和文件,如果系统安装的时候选择了很多软件包,那么这些软件包默认会安装到此目录下 |
/usr/lib/ | 应用程序调用的函数库保存位置 |
/usr/X11R6/ | X Windows系统的所有文件 |
/usr/local/ | 手工安装的软件保存位置。一般建议把源码包软件安装在这个目录中 |
/usr/share/ | 应用程序的资源文件保存位置,如帮助文档,说明文档和字体目录 |
/usr/src/ | 源码包保存位置,源码包和内核源码包都可以保存到这里 |
/var/ | 动态数据保存位置,主要用于存放系统运行以及软件运行的日志信息 |
/var/log/ | 存放各种系统或应用程序的日志文件 |
/var/lib/ | 该目录存放系统正常运行时需要调用或改变的库文件。如Mysql的数据库保存在/var/lib/mysql中 |
/var/www/ | rpm包安装的apache网页主目录位置 |
/var/spool/ | 放置队列数据的目录。就是队列等待其他程序使用的数据。比如邮件队列和打印队列 |
/var/spool/mail/ | 新收到的邮件队列保存位置,系统新收到的邮件都会保存在这个目录中 |
/var/spool/cron/ | 系统的定时任务队列保存位置,系统中的定时任务会保存到这里 |
/var/tmp/ | 临时目录,该目录允许比/tmp/存放更大的文件 |
总结:
1.linux的目录中只有一个根目录
2.linux的各个目录存放的内容是规划好的
3.linux是以文件的形式管理我们的设备,就一句话 linux系统,一切都是文件
4.linux的各个文件目录下存放什么内容,有一个简单的规划
5.对于上面文件夹有一个简单的认知,形成一个规划树
6.在linux里绝对路径比相对路径使用的多
一、文件处理命令
1. ls (显示目录文件)
shell
-a: 显示所有文件,包括隐藏文件
-l:详细信息显示
-d:查看目录属性
-h:文件大小显示为常见单位
-i:查询文件的inode号
-R:递归显示目录及其子目录
-n:显示文件的UID和GID
操作代码:
shell
[root@localhost ~]# ls -ldh
dr-xr-x---. 7 root root 4.0K 4月 25 15:33 .
[root@localhost ~]# ls -iRn
.:
总用量 8
33574979 -rw-------. 1 0 0 1680 4月 23 20:21 anaconda-ks.cfg
33575011 -rw-r--r--. 1 0 0 1714 4月 23 20:22 initial-setup-ks.cfg
[root@localhost ~]# ls -a
. .bashrc initial-setup-ks.cfg .xauth96RMtP
.. .cache .mysql_history .xauthLIpWzQ
anaconda-ks.cfg .config .pki .Xauthority
.bash_history .cshrc .tcshrc
.bash_logout .dbus .viminfo
.bash_profile .gvfs .xauth435stC
2. touch (创建空文件/更新修改和访问时间)
命名规则:
除了/之外,所有字符都合法
有些字符最好不用
避免使用.作为普通文件开头
Linux严格区分大小写
长度不能大于255字符
操作代码
sh
[root@localhost ~]# touch inde.html
[root@localhost ~]# touch one{1..4} #一次创建多个文件
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg one2 one4
inde.html one1 one3
3. mkdir(创建新目录)
sh
-v:显示创建过程
-p:递归创建
操作代码:
sh
[root@localhost ~]# mkdir -vp ugh/ops
mkdir: 已创建目录 "ugh"
mkdir: 已创建目录 "ugh/ops"
4. cd (切换目录)
shell
cd 切换目录
cd ~ 进入当前用户的家目录
cd - 进入上次目录
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd . 进入当前目录
操作代码
shell
[root@localhost ~]# cd
[root@localhost ~]# cd ~
[root@localhost ~]# cd -
/root
[root@localhost ~]# cd ..
[root@localhost /]# cd ../..
[root@localhost /]# cd .
5. pwd (显示当前所在目录)
操作代码
sh
[root@localhost opt]# pwd
/opt
6. tree(显示目录树)
shell
-d:只显示目录
(在centos7.x安装后才可以使用)
操作代码
sh
#安装tree命令:
mount -t iso9660 /dev/sr0 /mnt/
#挂载。-t指定文件系统类型。/dev/sr0表示块设备文件,/mnt/表示挂载点。
#安装rpm包。
rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
[root@localhost ~]# tree /var/www
7. pstree(查看进程树之间的关系)
sh
-A:进程树之间的链接以ASCII码字符链接
-p:同时列出每个进程的PID
-u:同时列出每个进程的所属账号名称
操作代码:
sh
[liu@localhost ~]$ pstree -pAu
systemd(1)-+-ModemManager(6300)-+-{ModemManager}(6336)
| `-{ModemManager}(6350)
|-NetworkManager(6301)-+-{NetworkManager}(6378)
| `-{NetworkManager}(6409)
|-VGAuthService(6321)
|-abrt-watch-log(6298)
|-abrt-watch-log(6320)
|-abrtd(6297)
|-accounts-daemon(6318)-+-{accounts-daemon}(6342)
| `-{accounts-daemon}(6351)
|-alsactl(6332)
|-at-spi-bus-laun(8099,liu)-+-dbus-daemon(8104)---{dbus-daemon}(8105)
| |-{at-spi-bus-laun}(8100)
| |-{at-spi-bus-laun}(8101)
8. cp(复制、复制并改名)
shell
命令格式: cp 源文件或目录 目标目录
-r:复制目录
-p:保留文件属性
-a:相当于-rp
操作代码
sh
[root@localhost ~]# cp ./index.html /opt/
[root@localhost ~]# ls /opt/
index.html rh
9. mv(移动、重命名)
sh
命令格式: mv 源文件或目录 目标目录
操作代码
sh
[root@localhost ~]# cp ./index.html /opt/index.php
[root@localhost ~]# ls /opt/
index.php rh
10. rm(删除)
-r:删除目录
-f:强制删除
操作代码
sh
[root@localhost ~]# rm -rf /index.html
11. rmdir(删除空目录)
sh
-p:递归删除空目录
-v:显示指令执行过程
操作代码
shell
[root@localhost ~]# rmdir -pv /ol/dfg
12.cat(查看文件内容)
sh
-n:列出行号
cat:显示多个文件
cat:将多个文件合并(按照文件先后顺序)
(如文件超过1页内容后只能显示最后一页的内容)
操作代码
[root@localhost ~]# cat ./index.html ./initial-setup-ks.cfg
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
# License agreement
13. more(分页显示文件内容)
sh
b 向上翻页(打开文件时使用)
空格 向下翻页
Enter 换行
q或Q 退出
操作代码
sh
[root@localhost ~]# more ./index.html ./initial-setup-ks.cfg
::::::::::::::
./index.html
::::::::::::::
::::::::::::
./initial-setup-ks.cfg
::::::::::::::
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
14. less(分页显示文件内容)
显示文件内容的时候支持关键词查找
操作代码
shell
[root@localhost ~]# less ./initial-setup-ks.cfg
15. head(查看文件首部指定行)
sh
-n: 数字 查看文件指定首部n行
操作代码
shell
[root@localhost ~]# head -4 ./initial-setup-ks.cfg
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
# License agreement
[root@localhost ~]#
16. tail(查看文件尾部指定行)
sh
-n: 数字 查看文件指定尾部n行
操作代码
shell
[root@localhost ~]# tail -3 ./initial-setup-ks.cfg
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@localhost ~]#
17. ln(生成链接文件)
sh
-s:创建符号链接
操作代码
shell
[root@localhost ~]# ln -s /opt/index.html 创建软链接
[root@localhost ~]# ls
anaconda-ks.cfg index.html initial-setup-ks.cfg out outls
[root@localhost ~]# ln -s /opt/index.html 创建硬链接
[root@localhost ~]# ls
anaconda-ks.cfg index.html initial-setup-ks.cfg out outls
文件系统:
1.block:文件系统中存储数据的最小单元,ext4、xfs等文件系统中,创建时默认4kB,分为存储文件数据的data block和存储目录数据的directory block。
2.Inode:又称为"索引节点",每一个Inode号对应一个文件或目录,记录了文件的大小、所占用的block以及目录的directory block信息
3.Inode Bitmap:Inode位图,用二进制的方式记录了Inode的使用状况
4.Block Bitmap:Block位图,用二进制的方式记录了Block的使用状况
软链接和硬链接的区别
硬链接:
1.硬链接文件创建后文件链接数量+1,文件删除链接数量-1
2.当文件链接数量为1时,进行删除为永久删除
3.互为硬链接的文件,文件内容相同,inode号相同
4.互为硬链接文件,修改任意一个其余都会发生变化。
5.硬链接无法跨分区创建
6.目录无法创建硬链接
符号链接(软链接):
1.创建符号链接,文件链接数量不变。
2.创建符号链接建议写绝对路径
3.软链接文件类型l,文件默认权限最大
4.修改软链接或源文件,均会发生变化
5.软链接删除,源文件不受影响。源文件删除,软链接失效。
6.软链接可以跨分区创建
7.目录可以创建软链接
shell
[root@localhost ~]# echo "2403" >> ./in
index.html initial-setup-ks.cfg
[root@localhost ~]# echo "2403" >> ./index.html
[root@localhost ~]# cat index.html
2403
18 . echo输入命令
shell
echo "woshininanpengyou" > /root/documents/mount.txt
#将字符串写入到mount文件里
二、权限管理命令
前言:
-rw-r--r--. 1 root root 2008 4月 22 22:49 initial-setup-ks.cfg
权限位是十位
第一位:代表文件类型
- 普通文件
d 目录文件
l 链接文件
b 块设备文件
c 字符设备文件
s 套接字
套接字:它是Linux网络中的一个基本概念,它允许通过网络在不同进程之间进行通信。
俗话说就是两个进程之间建立双向通信的端点。它是由IP地址、端口号组合组成
p 管道
其余九位为权限:
r w x r w x r w x
读 写 执行 读 写 执行 读 写 执行
4 2 1 4 2 1 4 2 1
文件所有者(u) 文件所属组(g) 其他用户(o)other
1. chmod(修改文件的权限)
shell
命令格式:
chmod u+x 文件
chmod g+w,o+w 文件
chmod u=rwx 文件
chmod 644 文件
操作代码
shell
[root@localhost ~]# ls -l
总用量 8
-rw-r--r--. 1 root root 0 4月 27 00:41 mln
[root@localhost ~]# chmod u+x mln
[root@localhost ~]# ls -l
总用量 1
-rwxr--r--. 1 root root 0 4月 27 00:41 mln
[root@localhost ~]# chmod u=rwx mo
[root@localhost ~]# ls -l
-rwxr--r--. 1 root root 0 4月 27 00:44 mo
2. chown(修改文件或目录的所有者,所属组)
shell
命令格式:chown user1 ss
chown user1:user2 ss
chown :user1 ss
操作代码:
shell
[root@localhost ~]# chown feng:root mo
[root@localhost ~]# ls -l
-rwxrw-rw-. 1 root root 0 4月 27 00:41 mln
-rwxr--r--. 1 feng root 0 4月 27 00:44 mo
[root@localhost ~]#
3. chgrp(改变文件或目录的所属组)
shell
命令格式:chgrp 用户组 文件或目录
chgrp roushan ss
操作代码:
shell
[root@localhost ~]# chgrp feng mln
[root@localhost ~]# ls-l
bash: ls-l: 未找到命令...
[root@localhost ~]# ls -l
-rwxrw-rw-. 1 root feng 0 4月 27 00:41 mln
-rwxr--r--. 1 feng root 0 4月 27 00:44 mo
4. umask(显示和设置掩码值)
对目录和文件生效,在默认掩码为0022下文件最大权限缺省为644,目录缺省最大权限为755
操作代码
shell
[root@localhost ~]# umask
0022
[root@localhost ~]# umask 0011
[root@localhost ~]# umask
0011
[root@localhost ~]# ls -l
-rw-rw-rw-. 1 root root 0 4月 27 01:46 guo
-rw-r--r--. 1 root root 0 4月 27 01:48 yu
三、查找命令
1. which(查看命令文件位置和命令可能出现的别名)
shell
whick 命令文件
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
......
#设置别名
[root@localhost ~]# alias cpa='cp -a'
[root@localhost ~]# alias
alias cp='cp -i'
alias cpa='cp -a'
#删除别名
[root@localhost ~]# unalias cpa
操作代码:
shell
[root@localhost ~]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@localhost ~]#
2. whereis(查找命令及帮助文档所在位置)
shell
whereis 命令文件
操作代码
shell
[root@localhost ~]# whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz
[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@localhost ~]#
3. locate(按照文件名查找,按照数据库查找)
updatedb 强制更新数据库
操作代码
shell
[root@localhost ~]# locate /etc/in
/etc/init.d
/etc/inittab
/etc/inputrc
[root@localhost ~]#
4. find(搜索系统中符合条件的文件)
shell
-name 根据文件名查找
通配符:* 任意多个字符
? 任意一个字符
[] 指范围值,外侧加引号
-size 根据大小查找 +大于 -小于
-user 根据所有者查找
-group 根据所属组查找
-perm 根据文件权限查找
-按时间查找
按天 ctime atime mtime
按分钟 cmin amin mmin
c change 表示属性被修改过:所有者、所属组、权限
a access 被访问过(被查看过)
m modeify 表示内容被修改过
-type 根据文件类型查找
-type f 二进制文件(普通文件)
-type l 软连接文件
-type d 目录
-逻辑连接符
-a and逻辑与
-o or逻辑或
-命令执行连接符(对查到的文件进一步处理)
find ... -exec 命令 {} \;
{}表示find查询的结果集
\是转义符,不适用命名别名,直接使用命令本身
;分号是表示语句结束
-inum 根据文件i节点查询
find ./ inum 231906 -exec rm{} \;
有些文件的硬链接数量有很多,有相同的i节点,查找其中的一个文件的i节点号,一次性删除
xargs命令:把前一个命令输出的结果当成多个参数
find /-name "aaa*" | xargs rm -rf
操作代码
shell
#根据文件名查询
[root@localhost ~]# find ./ -name "dfz34"
./dfz34
[root@localhost ~]# find ./ -name "dfz*"
./dfz1
./dfz2
.......
./dfz111
[root@localhost ~]# find ./ -name "dfz?"
./dfz1
./dfz2
......
./dfz9
[root@localhost ~]# find ./ -name "dfz[0-9]"
./dfz1
./dfz2
......
./dfz9
#根据大小查询
[root@localhost ~]# find ./ -size +4k
./.viminfo
#根据所有者查找
[root@localhost ~]# find /opt/ -user root
/opt/
/opt/rh
/opt/init1
/opt/init2
........
/opt/init5
#根据所属组查找
[root@localhost ~]# find /opt/ -group "root"
/opt/
/opt/rh
/opt/init1
/opt/init2
#根据文件权限查找
[root@localhost ~]# find /opt/ -perm "777"
[root@localhost ~]# find /opt/ -perm "644"
/opt/init1
/opt/init2
/opt/init3
/opt/init4
/opt/init5
#根据时间查找
[root@localhost ~]# find /etc/ -mmin -120
/etc/
/etc/resolv.conf
[root@localhost ~]# find /etc/ -amin -120
/etc/
/etc/resolv.conf
/etc/machine-id
#-type 根据文件类型查找
[root@localhost ~]# find /opt/ -type f
/opt/init1
/opt/init2
/opt/init3
/opt/init4
/opt/init5
[root@localhost ~]# find /opt/ -type d
/opt/
/opt/rh
#-逻辑连接符
#查询opt目录下文件大小大于8kb并且小于10kb
[root@localhost ~]# find /opt -size +8k -a -size -10k
[root@localhost ~]#
#-inum 根据文件i节点查询
[root@localhost ~]# find ./ inum 231906 -exec rm{} \;
find: 'rm./': 没有那个文件或目录
find: 'rm./.bash_logout': 没有那个文件或目录
find: 'rm./.bash_profile': 没有那个文件或目录
find: 'rm./.bashrc': 没有那个文件或目录
find: 'rm./.cshrc': 没有那个文件或目录
find: 'rm./.tcshrc': 没有那个文件或目录
find: 'rm./anaconda-ks.cfg': 没有那个文件或目录
#xargs命令:把前一个命令输出的结果当成多个参数
[root@localhost ~]# find / -name "dfz*" | xargs rm -rf
find: '/proc/9861': 没有那个文件或目录
find: '/run/user/1000/gvfs': 权限不够
5. grep 文件名(在文件内查符合条件的字符串行)
shell
grep "字符串" 文件名(很强大的文本搜索命令)
-v 反向选择
-i 忽略大小写
操作代码
shell
[root@localhost ~]# grep ^ROOT -i /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep mysql -i /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# If you need to run mysqld under a different user or group,
[mysqld_safe]
6.管道符
命令1 | 命令2
将命令1的标准输出作为命令2的标准输入
操作代码
shell
[root@localhost ~]# more ./ok | grep h
freohgiaefkordhiodshfkdsahhfm,jadshnhjkfhadsc hvkmadshbf iuvjerbhnfkbnv ehjnfkdsavvbjnfbdfms ,jvn dkmscbfn kdfnv kldengjkv ernfkelr joifikodwjefioekrj
[root@localhost ~]# less ./ok | grep o
freohgiaefkordhiodshfkdsahhfm,jadshnhjkfhadsc hvkmadshbf iuvjerbhnfkbnv ehjnfkdsavvbjnfbdfms ,jvn dkmscbfn kdfnv kldengjkv ernfkelr joifikodwjefioekrj
#grep文本条件筛选,筛选出来会自动显示颜色
四、帮助命令
1. man(查看命令的帮助)
man -f 命令
操作代码
shell
[root@localhost ~]# man -f ls
ls (1) - 列目录内容
ls (1p) - list directory contents
[root@localhost ~]# man -f cd
cd (1) - GNU Bourne-Again SHell (GNU 命令解释程...
cd (3tcl) - 改变工作目录
cd (1p) - change the working directory
[root@localhost ~]#
2. help 内部命令 (查看内部消息)
type 命令 的方式查看命令是否为内部命令
内部命令如cd pwd、echo等
外部命令如:ls、vi等命令
3. type查看命令类型(内建命令/外部命令)
shell
[root@localhost ~]# type cd
cd 是 shell 内嵌
[root@localhost ~]# type ls
ls 是 `ls --color=auto' 的别名
[root@localhost ~]#
4.命令 --help 查看命令的常见选项
shell
[root@localhost ~]# cp --help
用法:cp [选项]... [-T] 源文件 目标文件
或:cp [选项]... 源文件... 目录
或:cp [选项]... -t 目录 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
-a, --archive 等于-dR --preserve=all
...
5. info 命令 (比man更详细的帮助命令)
shell
回车:进入子帮助页面(带有*号标记)
u:进入上层页面
n:进入下一个帮助小节
p:进入上一个帮助小节
q:退出
操作代码
shell
[root@localhost ~]# info cp
File: coreutils.info, Node: cp invocation, Next: dd invocation, U\
p: Basic operations
11.1 'cp': Copy files and directories
=====================================
'cp' copies files (or, optionally, directories). The copy is comple\
tely
independent of the original. You can either copy one file to anothe\
r,
五、网络命令
1. ping 测试网络环境
-c 指定ping次数
操作代码
shell
[root@localhost ~]# ping -c 4 192.168.186.128
PING 192.168.186.128 (192.168.186.128) 56(84) bytes of data.
64 bytes from 192.168.186.128: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from 192.168.186.128: icmp_seq=2 ttl=64 time=0.095 ms
64 bytes from 192.168.186.128: icmp_seq=3 ttl=64 time=0.034 ms
64 bytes from 192.168.186.128: icmp_seq=4 ttl=64 time=0.037 ms
--- 192.168.186.128 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.034/0.059/0.095/0.026 ms
2. ifconfig 查询本机网络信息
shell
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.186.128 netmask 255.255.255.0 broadcast 192.168.186.255
inet6 fe80::a1e:9d6c:d210:134e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:36:87:c7 txqueuelen 1000 (Ethernet)
RX packets 9493 bytes 689824 (673.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16737 bytes 26656355 (25.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
第一行:
up:网卡开启状态
BROADCAST:广播
RUNNING:网线处理连接状态
MULTICAST:支持组播
mtu 1500 :最大传输单元大小为1500字节
第二行:该网卡的IP地址,子网掩码,广播地址
第三行:IPV6的配置信息
第四行:网卡的MAC地址
ether表示连接类型为以太网
txqueuelen 1000---》传输队列的长度
第五六行:网卡接收数据包的统计信息和接收错误的统计信息
第七八行:网卡发送数据包的统计信息和发送错误的统计信息
网卡路径:/etc/sysconfig/network-scipts/ifcfg-ens33
systemctl restart network
作用:CENTOS7的网卡重启
systemctl stop network
作用;关闭网卡
systemctl start network
作用:启动网卡
添加临时IP
shell
ifconfig ens33:0 192.168.5.200 netmask 255.255.255.0 up
ens33:0 表示第一个虚拟网卡
[root@localhost ~]# ifconfig ens33 192.168.5.200 netmask 255.255.255.0 up
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.200 netmask 255.255.255.0 broadcast 192.168.5.255
ether 00:0c:29:90:83:e6 txqueuelen 1000 (Ethernet)
RX packets 261 bytes 24443 (23.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 110 bytes 13896 (13.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
添加真实网卡
shell
#添加真实虚拟网卡
nmcli connection add con-name ens37 type ethernet ifname ens37
ens37:网卡名称 ethernet 接口类型
#启动ens33虚拟网卡
root@localhost ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
#暂停ens33虚拟网卡
[root@localhost ~]# nmcli connection down ens33
成功取消激活连接 'ens33'(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
#重载配置文件
[root@localhost ~]# nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]#
修改静态地址
shell
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#修改静态
BOOTPROTO="static"
#修改IP地址
IPADDR="192.168.51.245"
#子网掩码
NETMASK="255.255.255.0"
#网关
GATEWAY="192.168.51.1"
#DNS
DNS1="114.114.114.114"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="62929846-1f8a-4837-98ab-95232fc68e33"
DEVICE="ens33"
ONBOOT="yes"
3. w 查询当前登录服务器的用户
shell
第一行:当前时间,持续运行时间,登录用户数量,1分钟,5分钟,15分钟 前的平均负载
第二行: 用户名 tty:登录终端 FROM:来源IP 登录时间
IDLE:用户闲置时间
JCPU:所有进程占用CPU时间
PCPU:当前进程占用CPU时间
WHAT:用户正在进行的操作
操作代码
shell
[liu@localhost ~]$ w
17:59:00 up 1:02, 3 users, load average: 0.00, 0.01, 0.03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
liu :0 :0 16:56 ?xdm? 41.38s 0.22s /usr/libexec
liu pts/0 :0 16:57 4.00s 0.05s 0.03s w
liu pts/1 :0 16:57 59:24 0.08s 0.08s bas
4. who 查询登录用户
shell
[root@localhost ~]# who
yang :0 2024-04-22 22:49 (:0)
yang pts/0 2024-04-28 14:07 (:0)
root pts/1 2024-04-28 14:47 (192.168.186.1)
5. last 查看登录系统的相关信息
shell
yang pts/0 :0 Mon Apr 29 16:36 still logged in
第一列:用户名
第二列:终端位置
第三列:登录IP或内核版本
第四列:开始时间
第五列:结束时间
第六列:持续时间
操作代码:
shell
[root@localhost ~]# last
yang pts/0 :0 Mon Apr 29 16:36 still logged in
yang pts/0 :0 Mon Apr 29 16:12 - 16:36 (00:23)
yang :0 :0 Mon Apr 29 16:12 still logged in
reboot system boot 3.10.0-957.el7.x Mon Apr 29 16:11 - 16:57 (00:46)
root pts/1 192.168.186.1 Sun Apr 28 20:15 - crash (19:55)
root pts/1 192.168.186.1 Sun Apr 28 20:00 - 20:15 (00:14)
root pts/1 192.168.186.1 Sun Apr 28 14:47 - 18:54 (04:06)
yang pts/0 :0 Sun Apr 28 14:07 - crash (1+02:04)
yang pts/0 :0 Sun Apr 28 14:04 - 14:04 (00:00)
yang :0 :0 Mon Apr 22 22:49 - crash (6+17:21)
reboot system boot 3.10.0-957.el7.x Mon Apr 22 22:46 - 16:57 (6+18:11)
wtmp begins Mon Apr 22 22:46:59 2024
[root@localhost ~]#
6. lastlog (显示账号最后一次登录的时间)
shell
[liu@localhost ~]$ lastlog
用户名 端口 来自 最后登陆时间
root pts/0 一 4月 29 16:05:28 +0800 2024
bin **从未登录过**
7. wall 对所有在线用户广播
shell
wall 字符串 或 wall enter(回车) 字符串 ctrl+d
操作代码
shell
[root@localhost ~]# wall nishiwodecai
Broadcast message from root@localhost.localdomain (pts/1) (Mon Apr 29 20:23:28 2024):
nishiwodecai
[root@localhost ~]#
---------------------------------------------------------
[liu@localhost ~]$ wall
Broadcast message from root@localhost.localdomain (pts/1) (Mon Apr 29 20:23:28 2024):
nishiwodecai
8. mail 邮件命令
shell
发信:
mail 用户名
标题
内容
ctrl+d 结束 发送
收信
mail
h 列出邮件列表
q 退出
操作代码
shell
#给liu用户发信
[root@localhost ~]# mail liu
Subject: yu guo feng
ni shi da sha bi !
jie na hai feng yue hai ya chui de ni nao gua teng
EOT
-----------------------------------------------------
#收信 h列出邮件列表 q退出
[liu@localhost ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/liu": 1 message 1 new
>N 1 root Mon Apr 29 20:26 19/672 "yu guo feng"
& h
>N 1 root Mon Apr 29 20:26 19/672 "yu guo feng"
& 1
Message 1:
From root@localhost.localdomain Mon Apr 29 20:26:37 2024
Return-Path: <root@localhost.localdomain>
X-Original-To: liu
Delivered-To: liu@localhost.localdomain
Date: Mon, 29 Apr 2024 20:26:37 +0800
To: liu@localhost.localdomain
Subject: yu guo feng
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@localhost.localdomain (root)
Status: R
ni shi da sha bi !
jie na hai feng yue hai ya chui de ni nao gua teng
9. netstat (查看网络连接状态)
shell
常见端口:
20、21 :ftp服务 文件共享
22:ssh服务 安全的远程连接
23:telnet
25:smtp:简单邮件传输协议 发信
110:pop3:邮局协议 收信
80:http超文本传输协议
3306:mysql端口
3389:windows终端端口
/etc/service 所有常见的端口
netstat -tlun 查看本机所有监听的端口
-t tcp协议
-u udp协议
-l 监听
-n 以IP和端口号的形式显示信息
-a 显示所有信息
-p 显示建立相关连接程序名
操作代码
shell
[root@localhost ~]# netstat -tlun
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
六、关机和重启命令
1.关机
shell
poweroff 掉电关机
init 0 以0级别运行
shutdown -h now now也可以换成具体时间
补充:init:切换系统级别
0级别:关机
3级别:字符界面
5级别:图形化
6级别:重启系统
2.重启
shell
shutdown -r now
reboot
init 6
3.数据同步
shell
sync
执行流程:
在Linux系统中,在文件或数据处理过程中通常都会放到内存缓冲区中
等到适当的时候在写入磁盘中,提高系统的运行效率。
sync的作用:
强制将内存缓冲区中的数据立刻写入到磁盘中。
一般情况下:
用户通常不需要执行sync命令,系统自己就会将缓冲区中的数据写入到磁盘中。
场景:
只有用户需要非正常关机时,才会手动执行sync命令。
七、挂载命令
Linux系统一切设备皆是文件。
比如第一张光盘,会被自动识别为/dev/sr0 (设备文件的命名方式是主设备号加次设备号。主设备号说明设备类型,次设备号说明是第几个设备)
但此时的设备还不能正常的读取,需要先进行挂载而后才能进行正常的读取。需要指定挂载点并执行挂载命令。
(不同光盘之间需要重新挂载并指定挂载点才能正常使用)
1.mount 查询系统中已经挂载的设备
shell
常见的存储设备
/dev/sda1 第一个scsi硬盘的第一个分区
/dev/cdrom 光盘
/dev/sr0 光盘
常用挂载点见目录
挂载格式:
shell
mount -t 文件系统类型 -o特殊选项 设备文件名 挂载点
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统
-o 特殊选项:可以指定挂载的额外选项,比如读写权限,同步异步等,如果不指定则默认值生效
参数 | 说明 |
---|---|
atime/noatime | 更新访问时间/不更新访问时间。范文分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动,mount -a 命令执行时 是否会自动挂载/etc/fstab文件内容挂载默认自动 |
defaults | 定义默认值,相当于rw,suid,dev,exec,auto,mouser,async这七个选项 |
exec/noexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是具有SUID和SGID的权限。默认有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有/root/可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认是不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
操作代码
shell
#重新挂载boot只读分区
mount -o remount,ro /boot
#挂载硬盘分区
#创建挂载点
mkdir /mnt/disk1
#挂载硬盘分区或者移动硬盘
mount /dev/sdb1 /mnt/disk1
#查看当前系统下的存储设备,确认U盘的设备名称
fdisk -l
#挂载NTFS格式
#安装扩展源
yum -y install epel-release
yum -y install ntfs-3g
mount -t ntf-3g /dev/sdb1 /media/
ls /media
挂载注意事项
同一个文件不应该重复挂载在不同的挂载点
同一个目录不应该重复挂载多个文件系统
作为挂载点,一定是空目录。
八、打包压缩
1. tar(文件打包和压缩)
打包和压缩的好处:节约硬盘的资源,加快文件的传输效率
shell
参数:
-c:创建文件
-x:提取,解压还原文件
-v:显示执行过程
-f:指定备份文件
-t:列出压缩包中包括那些文件,不解包,查看包中的内容
-C:指定解压位置
格式压缩常用参数:
-z: 以gzip压缩扩展名:tar.gz
-j: 以bz2方式压缩的扩展名 tar.bz2
J: 以xz方式压缩 扩展名:tar.xz
操作代码
shell
#不解包查看tar中的内容
tar -tvf ./grub.tar
#在打包过程中跳过某个文件或多个文件
tar --exclude /root/documents/group -cvf /root/black.tar /root/back/
#将documents下的文件压缩到opt下命名为files.tar.gz
tar -zcvf /opt/files.tar.gz /root/documents
2. zip (管理压缩软件)
zip 是压缩程序
unzip 是解压程序
操作代码
shell
#将documens所有文件压缩到all.zip
zip /all.zip /root/documents/*
#压缩一个目录
zip -r /all.zip /boot/grub
#解压到opt下面 -d:指定解压目录
unzip /all.zip -d /opt/
3. file 命令 (确定文件类型)
shell
注:
Linux系统不根据后缀识别文件类型
用file 命令查看文件的类型
操作代码:
shell
file /etc/passwd
/etc/passwd ASCII text