Linux基础知识(升级版)

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
相关推荐
码农君莫笑11 分钟前
《信管通低代码信息管理系统开发平台》Windows环境安装说明
服务器·数据库·windows·低代码·c#·bootstrap·.netcore
Wanliang Li14 分钟前
Linux电源管理——CPU Hotplug 流程
linux·嵌入式硬件·嵌入式·armv8·电源管理·cpuhotplug
fnd_LN21 分钟前
Linux文件目录 --- mkdir命令,创建目录,多级目录,设置目录权限
linux·运维·服务器
会飞的土拨鼠呀31 分钟前
Flannel是什么,如何安装Flannel
运维·云原生·kubernetes
木与子不厌33 分钟前
微服务自定义过滤器
运维·数据库·微服务
达帮主39 分钟前
7.C语言 宏(Macro) 宏定义,宏函数
linux·c语言·算法
行思理1 小时前
Linux 下SVN新手操作手册
linux·运维·svn
初学者丶一起加油1 小时前
C语言基础:指针(数组指针与指针数组)
linux·c语言·开发语言·数据结构·c++·算法·visual studio
沛沛老爹2 小时前
CI/CD是什么?
运维·git·ci/cd
一只搬砖的猹2 小时前
cJson系列——常用cJson库函数
linux·前端·javascript·python·物联网·mysql·json