Linux教程

Linux命令

本文主要是介绍Linux命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux基础命令

文章目录

  • Linux基础命令
    • ls
    • cd
    • pwd
    • touch
    • mkdir
    • echo
    • rm
    • sed
    • cat
    • head
    • tail
    • more
    • less
    • cp
    • 通配符
    • 压缩与解压缩
    • grep
    • df -h
    • find
    • 重定向
    • 管道符
    • 用户 user
    • 组 group
    • passwd
    • vi编辑器命令
    • 进程管理 ps
    • 权限管理
    • 软件管理
    • 服务控制的方式
    • 网卡回归传统名
    • ifconfig
    • ip
    • ss
    • 硬盘
      • 分区
    • 格式化
    • 挂载
          • kernel --->物理终端(/dev/console)---> /var/log/dmesg
            • /var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息
            • /var/log/maillog:邮件系统产生的日志信息
            • /var/log/secure:与安全相关的日志信息
          • facility可以理解为日志的来源或设备,目前常用的facility有以下几种:
            • auth #认证相关的
            • authpriv #权限、授权相关的
            • cron #任务计划相关的
            • daemon #守护进程相关的
            • kern #内核相关的
            • lpr #打印相关的
            • mail #邮件相关的
            • mark #标记相关的
            • news #新闻相关的
            • security #安全相关的,与auth类似
            • syslog #syslog自己的
            • user #用户相关的
            • uucp #unix to unix cp相关的
            • local0到local7 #用户自定义使用
            • * # *表示所有的facility
            • priority(log level)日志的级别,一般有以下几种级别(从低到高),级别越低,信息越详细:
            • debug #程序或系统的调试信息
            • info #一般信息
            • notice #不影响正常功能,需要注意的消息
            • warning/warn #可能影响系统功能,需要提醒用户的重要事件
            • err/error #错误信息
            • crit #紧急,比较严重的
            • alert #必须马上处理的
            • emerg/panic #会导致系统不可用的
            • \* # *表示所有的日志级别
            • none #跟*相反,表示啥也没有
          • action(动作)日志记录的位置:
            • 系统上的绝对路径 #普通文件,如:/var/log/xxx
            • | COMMAND #管道,通过管道送给其他的命令处理
            • 终端 #终端,如:/dev/console
            • @HOST #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1
            • 用户 #系统用户,如:root
            • * #登录到系统上的所有用户,一般emerg级别的日志是这样定义的
    • 源码安装三部曲

ls

列出: [options] 选项 [arges] 参数

-l 详细列出
[root@localhost ~]# ls -l
总用量 2
-rw-------. 1 root root 1392 7月 6 10:27  anaconda-k
-rw-r--r--. 1 root root 1547 7月 6 11:01  initial-s

-d 目录文件
[root@localhost ~]# ls -d
.

-a 显示所有文件
[root@localhost ~]# ls -a
 .   .bash_history   .cshrc 
 ..     文档              .bash_logout    .dbus
.....

-h 显示大小
[root@localhost ~]# ls -ahl
总用量 52K
dr-xr-x---. 16 root root 4.0K 7月   6 14:21  .
dr-xr-xr-x. 17 root root  224 7月   6 10:19  ..
-rw-r--r--.  1 root root  349 7月   6 11:42 '~'

cd

命令用于切换当前工作目录

cd [dirName] dirName:要切换的目标目录
cd ~       跳到自己的home目录
cd ../..   跳到目前目录的上上两层

示例:
[root@localhost ~]# cd new
[root@localhost new]# cd ../..
[root@localhost /]# 

pwd

命令用于显示工作目录

[root@localhost ~]# pwd
/root                        //输出结果

touch

(创建文件)

touch test            //创建一个名为“test”的新的空白文件

mkdir

(创建目录)

mkdir [-p] dirName
 -p 确保目录名称存在,不存在的就新建一个
 示例:
[root@localhost ~]# mkdir -p newfile
[root@localhost ~]# ls
anaconda-ks.cfg        newfile
initial-setup-ks.cfg
 

echo

(输出到屏幕)

示例:
[root@localhost ~]# echo hello word
hello word 

rm

(用于删除一个文件或者目录)

rm [options] name...                               
-i 删除前逐一询问确认。                                
-r 将目录及以下之档案亦逐一删除                                           
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认 (强制删除)。 

示例:删除文件可以直接使用rm命令,若删除目录需配合"-r"  
rm test.txt 
是否删除一般文件“test.txt”? y
rm  homework
rm: 无法删除目录"homework": 是一个目录
rm  -r  homework 
rm:是否删除 目录 "homework"? y 
删除当前目录下的所有文件及目录 :
rm -r *

sed

(编辑一个或多个文件、简化对文件的反复操作、编写转换程序等)

-n 只显示处理后的结果
-i 替换

示例:   sed -n '/test/p(打印)'  testfile
        sed -i 's/改变前/改变后/g'  testfile

cat

(命令用于连接文件并打印到标准输出设备上)

-n 或 --number:由 1 开始对所有输出的行数编号
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行

示例:
[root@localhost ~]# cat -n anaconda-ks.cfg  //从1编号查看文件内容并打印到标准输出设备
     1  #version=RHEL8
     2  ignoredisk --only-use=nvme0n1
     3  autopart --type=lvm
     4  # Partition clearing information
     5  clearpart --none --initlabel

head

命令可用于查看文件的开头部分的内容,常用的参数 -n 用于显示行数,默认显示前10

格式:
head [参数] [文件]
参数:
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数

示例:
[root@localhost ~]# head anaconda-ks.cfg   //默认显示前十行
#version=RHEL8
ignoredisk --only-use=nvme0n1
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
# Use graphical install
graphical
# Use CDROM installation media
cdrom
# Keyboard layouts

tail

(命令可用于查看文件的内容,默认显示后十行)

格式:
tail [参数] [文件]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

示例:
[root@localhost ~]# tail -n 3 anaconda-ks.cfg   //显示最后3行
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

more

(类似 cat 不过会以一页一页的形式显示,更方便)

格式:
more [文件名]

常用命令操作:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more

示例:
[root@localhost ~]# more anaconda-ks.cfg    //查看文件内容
#version=RHEL8
ignoredisk --only-use=nvme0n1
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
--更多--(19%)                           //按空格键显示下一屏

less

(less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页)

格式:
less [参数] [文件]
参数:
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:重复后一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

示例: less anaconda-ks.cfg   //查看文件
history | less     //查看历史命令

cp

(复制,主要用于复制文件或目录)

格式:
cp [options] source dest(源目标) 目标文件/目录
参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d:复制时保留链接。这里的链接相当于 Windows 系统中的快捷方式
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

示例:
[root@localhost ~]# cp -r test newfile //将目录test下的所有文件复制到新目录newfile下 
[root@localhost ~]# cd newfile/
[root@localhost newfile]# ls
test
[root@localhost newfile]#

通配符

* 任意字符串
?任意字符 
. 当前目录

压缩与解压缩

压缩格式:
gzip
bzip2
xz

tar命令:
格式:tar [options]选项 压缩后的新名字 要压缩的文件

参数:c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-f: 目标文件

示例:
[root@localhost ~]# ls
[root@localhost ~]# usr anaconda-ks.cfg   initial-setup-ks.cfg
[root@localhost ~]# tar -jcf new.tar.bz2 usr //压缩为bzip2格式,压缩usr,压缩名为new.tar.bz2
[root@localhost ~]# ls
 usr   anaconda-ks.cfg    initial-setup-ks.cfg   new.tar.bz2

grep

(过滤,用于查找文件里符合条件的字符串)

格式:
grep [选项] 关键字 [文件名]
参数:
-A 除了显示符合范本样式的那一列之外,并显示该行之后的内容
-B 除了显示符合范本样式的那一列之外,并显示该行之前的内容
-C 除了显示符合范本样式的那一列之外,并显示该行前后的内容
-i 或 --ignore-case : 忽略字符大小写的差别
-s 或 --no-messages : 不显示错误信息
-V 或 --version : 显示版本信息
-v 或 --invert-match : 显示不包含匹配文本的所有行

示例:
[root@localhost ~]# grep -C 1 only anaconda-ks.cfg //过滤包含'only'的前后各一行
#version=RHEL8
ignoredisk --only-use=nvme0n1
autopart --type=lvm


df -h

(文件系统磁盘使用情况统计)

格式:
df [options]选项...file...

[root@localhost ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
devtmpfs               1.4G     0  1.4G    0% /dev
tmpfs                  1.4G     0  1.4G    0% /dev/shm
tmpfs                  1.4G   10M  1.4G    1% /run
tmpfs                  1.4G     0  1.4G    0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  4.3G   13G   25% /
/dev/nvme0n1p1        1014M  229M  786M   23% /boot

[root@localhost ~]# df -h |awk '{print $3}'  //查看第三列的内容
已用
0
0
10M
0
4.3G
229M

[root@localhost ~]# df -h |awk 'NR==4{print $3}' //查看第三列第四行的内容
10M

find

(用来查找文件)

语法:
find path -option [ -print ] [ -exec -ok command ] {} ;
选项:
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes
-type c : 文件类型是 c 的文件
d: 目录
f: 一般文件
-amin n : 在过去 n 分钟内被读取过
-atime n : 在过去n天内被读取过的文件
cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件

示例:
将当前目录及其子目录下所有文件前缀为1的文件列出来
[root@localhost ~]# find . -name "1*"
./11
./12
./13
./14
查找类型为目录的文件
[root@localhost ~]# find -type d
.
./.config
./.config/procps

在当前目录下查找小于1k的文件
[root@localhost ~]# find . -size -1k
./abc
./11
./12

重定向

重定向分为输出重定向,输入重定向
输出重定向分为两种:
  覆盖重定向 >   echo  'hello'  >  abc //将输出的内容'hello'存入文件abc中并覆盖
  追加定向   >>  echo  'hello' >> abc //将输出的内容追加到abc中
输入重定向   <    cat > def < abc  //将abc文件中的输入到def文件中

管道符

(把前面执行的结果交给后面的处理 ) |

示例:
 find -name abc |xargs rm -rf //查找文件abc然后交给后面处理

用户 user

(useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中)

用户id: 系统用户 1-999 普通用户1000-65535

useradd 创建用户  
参数:
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录>  指定用户登入时的起始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s<shell>   指定用户登入后所使用的shell。
-u<uid>  指定用户ID。

示例:  添加一般用户:           useradd tom
为添加的用户指定相应的用户组:    useradd -g root tom
创建一个系统用户:              useradd -r tom
为新添加的用户指定home目录:     useradd -d /home/myda  tom
创建用户并指定ID:             useradd -u 1006 tom
要拒绝系统用户登录,可以将其 shell 设置为 /usr/sbin/nologin 或者 /bin/false:
创建一个不能登录的用户: 
useradd -s /sbin/nologin tom 
或  useradd -d /usr/local/httpd -g alice -s /bin/false username

usermod 修改用户账号的各项设定
格式:  
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

参数:
-U  解除密码锁定
-L  锁定用户密码,使密码无效
-u<uid>  修改用户ID
-e<有效期限>  修改帐号的有效期限
-d登入目录>   修改用户登入时的目录
-G<群组>     修改用户所属的附加群组
-s<shell>    修改用户登入后所使用的shell

示例:
[root@localhost ~]# usermod -s /bin/bash apps //设置用户"apps"并允许登录
[root@localhost ~]# su - apps
[apps@localhost ~]$ 

改变用户的uid   
[root@localhost ~]# id tom
uid=1003(tom) gid=1000(xiix) 组=1000(xiix)
[root@localhost ~]# usermod -u 1010 tom
[root@localhost ~]# id tom
uid=1010(tom) gid=1000(xiix) 组=1000(xiix)

userdel 
删除用户,userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件
格式:
userdel [-r] [用户帐号]
参数:  
-r  删除用户登入目录以及目录中所有文件。
示例: 仅删除用户
[root@localhost ~]# userdel tom
[root@localhost ~]# id tom
id: “tom”:无此用户

组 group

groupadd 创建一个新的工作组,新工作组的信息将被添加到系统文件中
相关文件:
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/login.defs Shadow密码套件配置
格式:
groupadd [-g gid [-o]] [-r] [-f] group
参数:
-g:指定新建工作组的 id
-r:创建系统工作组,系统工作组的组ID小于 500
-o:允许添加组 ID 号不唯一的工作组
-f,–force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一 个唯一的GID(即-g关闭)

示例:  创建一个新的组,并添加组ID
groupadd -g 444 alice  

groupdel 要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组
格式:
groupdel [群组名称]

示例:  删除一个群组
[root@localhost ~]# groupdel alice

passwd

(用来更改使用者的密码,普通用户只能给自己设置密码,管理员可以给任何人设置密码,普通用户要遵循密码复杂性要求 ,最少8位)

语法:
passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
参数:
-d 删除密码
-f 强迫用户下次登录时必须修改口令
-w 口令要到期提前警告的天数
-k 更新只能发送在过期之后
-l 停止账号使用
-S 显示密码信息
-u 启用已被停止的账户
-x 指定口令最长存活期
-g 修改群组密码
指定口令最短存活期
-i 口令过期后多少天停用账户

选择参数:
--help 显示帮助信息
--version 显示版本信息

示例:  普通用户更改自己的密码
[alice@localhost root]$ passwd
更改用户 alice 的密码 。
Current password:   //输入当前密码,不显示
新的 密码:  //输入新的密码,不显示
重新输入新的 密码://输入新的密码,不显示
passwd:所有的身份验证令牌已经成功更新。

设置密码的另一种方式: echo '密码' |passwd --stdin root //只有root用户可以设置

Linux红帽8破解密码步骤:
关机
开机
按字母e进入内核,编译当前条目
找到Linux开头的,在结尾添加rd.break 
按 ctrl+x
重启以读写⽅式挂载  mount -o  remount,rw  /sysroot 回车
切换⾄真正操作系统的根    chroot   /sysroot    回车
重置密码 echo  '密码' | passwd  --stdin root    回车
touch  /.autorelabel     打标签
exit 退出
exit 退出

vi编辑器命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exEaX7Ky-1626166203077)(C:\Users\Ahsidb\Pictures\Saved Pictures\vi编辑器模式.jpg)]

命令模式---->输入模式:
	a 在光标的后面转为输入模式
	i  在光标的前面转为输入模式
	o 在光标的下面转为输入模式
	A 在光标的行尾转为输入模式
	I 在光标的行首转为输入模式
	O 在光标的上面转为输入模式
命令模式常用命令:
	g    跳到第一行
	3gg  跳到第三行
	G    跳到最后一行
	dd   删除当前光标所在行
	3dd  删除包含当前光标所在行内一共三行
	D    删除当前光标所在行的内容
	yy   复制当前行的内容
	3yy  复制光标所在行的3行
	p    粘贴到当前光标的前面面一行
	P    粘贴到当前光标的后面一行
末行模式:
	:wq! 强制保存并退出
	:q!  不保存退出	
输入模式 ----> 命令模式:  ESC
命令模式  >  末行模式  : 冒号

进程管理 ps

进程管理
	ps  查看进程
	ps aux  | grep  进程名字
	ps  -ef  | grep 进程名字
	top   查看实时进程
负载平均值 (等待处理的进程)
杀进程:
	kill pid  (默认是15,处理完杀死)
	kill   -9(立即杀死) pid	

权限管理

基础权限  chmod:
	r   读    4
	w   写    2
	x   执行  1
		chmod  u|g|o + | - | =  权限  filename
		chmod 755 filename   (用数字表示权限来更改某一个文件的权限)
特殊权限  chmod:
	suid  4   针对应用程序设置
		chmod u+s filename
		chmod 4755 filename
	sgid  2   针对目录设置
		chmod g+s  dir
		chmod 2755 dir
	sticky  1
		chmod o+t  dir
		hmod 1777  dir
ACL文件访问控制列表:  setfcl
	setfcl -m u:用户:权限   filename
	setfcl -m g:组:权限    filename
权限委派sudo:
	visudo 添加命令,使用绝对路径
	用root用户进入visudo给alice用户提供创建用户和删除用户的权限
	100 root    ALL=(ALL)       ALL
    101 alice   ALL=(ALL)        /sbin/useradd, /sbin/userdel
    登录alice用户
    [root@localhost ~]# su - alice
    上一次登录:四 7月  8 04:08:47 EDT 2021pts/0 上
    [alice@localhost ~]$ sudo useradd QWQ
    [sudo] alice 的密码:  //输入密码无显示
    [alice@localhost ~]$ id QWQ
    uid=1011(QWQ) gid=1011(QWQ) 组=1011(QWQ)

软件管理

rpm管理:   mount /dev/cdrom /mnt   挂载
	rpm -ivh  安装包的路径            安装
       [root@localhost ~]# rpm -ivh /mnt/AppStream/Packages/wget-1.19.5-10.el8.x86_64.rpm
       
	rpm -e pack-name(安装包的名字)    卸载
	   [root@localhost ~]# rpm -e wget
	   
	rpm -qa | grep pack_name  查找所有已安装的包过滤包的名字  查询
	   [root@localhost ~]# rpm -qa |grep wget //没安装的话无回显
	   wget-1.19.5-10.el8.x86_64
	   
	rpm -ql pack_name 列出包安装时安装了哪些文件及文件位置
	   [root@localhost ~]# rpm -ql  wget
        /etc/wgetrc
        /usr/bin/wget
        /usr/lib/.build-id

	rpm -qc pack_name 列出包安装后生成的配置文件在哪
	   [root@localhost ~]# rpm -qc  wget
        /etc/wgetrc
        
	rpm -qd pack_name  帮助文档documentation
	   [root@localhost ~]# rpm -qd wget
         /usr/share/doc/wget/AUTHORS
        /usr/share/doc/wget/COPYING
        /usr/share/doc/wget/MAILING-LIST
        
	rpm -qf  /path/to/filename   查询文件是由哪个包提供的
       [root@localhost ~]# rpm -qf /usr/bin/wget
         wget-1.19.5-10.el8.x86_64

yum |dnf 管理:
	yum -y install pack_name  安装 
	yum  -y remove  pack_name  卸载
	yum provides *bin/命令    查看安装的包名和仓库信息
	yum  provides   路径
	yum list all |grep pack_name 	
	   [root@localhost ~]# yum list all |grep wget
           wget.x86_64    
             1.19.5-10.el8   
            appstream 

	yum clean all  清理缓存

服务控制的方式

(CentOS6和CentOS7及以后的版本命令比较)

CentOS6及以前的版本命令:
	service  SERVICE_NAME start    //启动服务 
	service SERVICE_NAME  stop     //停止服务 
	service SERVICE_NAME status    //查看服务状态 
	service SERVICE_NAME restart   //重启服务
	chkconfig --add SERVICE_NAME   //添加到开机自启的服务里去
	chkconfig SERVICE_NAME on      ///设置服务开机自启
	chkconfig SERVICE_NAME off     //设置服务开机不自启
CentOS7及以后的版本命令:
	systemctl start SERVICE_NAME   //启动服务
	systemctl stop SERVICE_NAME    //停止服务
	systemctl status SERVICE_NAME  //查看服务状态
	systemctl restart SERVICE_NAME //重启服务
	systemctl enable SERVICE_NAME  //设置服务开机自启
	systemctl disable SERVICE_NAME //设置服务开机不自启

网卡回归传统名

步骤
1.修改网卡配置文件的名字并改变里面的内容
2.编辑/etc/default/grub,在rhgb前面加上net.ifnames=0 biosdevname=0
3.生成配置文件grub2-mkconfig -o /etc/grub2.cfg
4.reboot

1.修改网卡配置文件的名字并改变里面的内容
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33    //查看网卡名
[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0  //修改网卡名
// vi ifcfg-eth0
  精简配置:                                 
  TYPE=Ethernet  //类型为以太网
  BOOTPROTO=static //网卡获取方式设为静态
  DEVICE=eth0 //设备名与网卡名相同
  NAME=eth0 //网卡名
  ONBOOT=yes  //开机自启
  IPADDR=192.168.220.10 // IP
  NETMASK=255.255.255.0 //子网掩码 
  GATEWAY=192.168.220.2   //网关
  DNS1=114.114.114.114   //域名
2.编辑/etc/default/grub,在rhgb前面加上net.ifnames=0 biosdevname=0
 // vi /etc/default/grub
   5 GRUB_TERMINAL_OUTPUT="console"
   6 GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap   rd.lvm.lv=cs/root rd.lvm.lv=cs/swap net.ifnames=0 biosdevname=0 rhgb quiet"
   7 GRUB_DISABLE_RECOVERY="true"
3.生成配置文件grub2-mkconfing -o /etc/grub2.cfg
  [root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg
4.重启
[root@localhost ~]# reboot

ifconfig

显示或设置网络设备

[root@localhost ~]# ifconfig   //查看ip信息
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.220.7  netmask 255.255.255.0  broadcast 192.168.220.255
        inet6 fe80::18d8:1102:1c2f:cc64  prefixlen 64  scopeid 0x20<link>
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        
 [root@localhost ~]# ifconfig eth0   //查看某一个ip信息
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.220.7  netmask 255.255.255.0  broadcast 192.168.220.255
        inet6 fe80::18d8:1102:1c2f:cc64  prefixlen 64  scopeid 0x20<link>
        
[root@localhost ~]# ifconfig lo down //禁用某一个网卡
[root@localhost ~]# ifconfig lo
lo: flags=8<LOOPBACK>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        
[root@localhost ~]# ifconfig lo up   //启用某一个网卡
[root@localhost ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>     

ip

用来显示或操纵Linux主机的路由,网络设备,策略路由和隧道,是Linux下较新的功能强大的网络配置工具

ip 对象 操作(ip addr show)

[root@localhost ~]# ip addr show  //查看ip信息,ip a也可以查看
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:0a:e0:07 brd ff:ff:ff:ff:ff:ff
    inet 192.168.220.7/24 brd 192.168.220.255 scope global noprefixroute eth0

ip link(网卡) set(设置) lo down

[root@localhost ~]# ip link set lo down  //禁用网卡lo
[root@localhost ~]# ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever

ss

监听网络的状态,ss(更高级)和netstat一样

LISTEN 监听状态
ESTABLISHED 已建立连接
TIME_WAIT 等待状态

[root@localhost ~]# ss -an  //查看系统正在运行的内容
1023                                0:976                        
mptcp          LISTEN           0                128             
                                                         0.0.0.0:
22                            0.0.0.0:*                          
mptcp          ESTAB            0                52              
                                                   192.168.220.7:
22                      192.168.220.1:60624                      
mptcp          ESTAB            0                0               
[root@localhost ~]# ss -ant  //t(tcp的状态)
State              Recv-Q             Send-Q                           Local Address:Port                            Peer Address:Port              Process             
LISTEN             0                  128                                    0.0.0.0:22                                   0.0.0.0:*                                     
ESTAB              0                  52                               192.168.220.7:22                             192.168.220.1:60624                                 
ESTAB              0                  0                                192.168.220.7:22                             192.168.220.1:59095                                 
LISTEN             0                  128                                       [::]:22                                      [::]:*                             [root@localhost ~]# ss -antl //l(监听的状态)
State               Recv-Q              Send-Q                           Local Address:Port                           Peer Address:Port             Process             
LISTEN              0                   128                                    0.0.0.0:22                                  0.0.0.0:*                                    
LISTEN              0                   128                                       [::]:22                                     [::]:*                           [root@localhost ~]# ss -antlp //p(进程)
State            Recv-Q           Send-Q                     Local Address:Port                     Peer Address:Port          Process                                  
LISTEN           0                128                              0.0.0.0:22                            0.0.0.0:*              users:(("sshd",pid=970,fd=5))           
LISTEN           0                128                                 [::]:22                               [::]:*              users:(("sshd",pid=970,fd=7))                       

硬盘

分为:

IDE硬盘 hd ( a | b | c |…) //硬盘命名格式

SCSI硬盘 sd ( a | b | c |…) //硬盘命名格式

虚拟化硬盘 vd ( a | b | c |…) //硬盘命名格式

分区

目的:方便管理

MBR分区和GPT分区

​ MBR分区:

​ 主分区 (P:Primary)1-4

​ 最多只能有4个主分区

​ 扩展分区(E:Extend) 2-4

​ 占个位子,不能使用,主要目的是为了创建逻辑分区使用 1k

​ 逻辑分区(L:Logical) 5…

​ 命名从5开始

格式化

目的是为了创建文件系统 mkfs (Make FileSystem)
windows文件系统:
fat32 单个文件不能 超过4G
ntfs 单个文件可以超过4G,兼容性差
exfat 单个文件可以超过4G,兼容性好
Linux文件系统:
ext2 ext3 ext4 xfs vfat brfs …

挂载

分为临时挂载(命令临时挂载)和永久挂载(写进配置文件/etc/fstab)

[root@localhost ~]# lsblk  //列出所有磁盘信息
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0    0  20G  0 disk 
├─sda1    8:1    0   1G  0 part       
└─sda2        8:2    0  19G  0 part 
[root@localhost ~]# blkid /dev/sda1  //查看sda1的UUID和其他信息
/dev/sda1: UUID="2186ad89-b271-4aec-87e9-2f662943333d" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="7bf0ca76-01"

[root@localhost ~]# mount /dev/sr0 /mnt  //临时挂载,再次开机失效
mount: /mnt: WARNING: device write-protected, mounted read-only.

[root@localhost ~]# vi /etc/fstab  //写进配置文件进行永久挂载,再次开机将自动挂载
[root@localhost ~]# cat /etc/fstab 
  # /etc/fstab
  # Created by anaconda on Wed Jul  7 08:42:50 2021
  # Accessible filesystems, by reference, are maintained under '/dev/disk/'.
  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
  # After editing this file, run 'systemctl daemon-reload' to update systemd
  # units generated from this file.
  /dev/mapper/cs-root     /                       xfs     defaults        0 0
  UUID=2186ad89-b271-4aec-87e9-2f662943333d /boot                   xfs     defaults        0 0
  /dev/mapper/cs-swap     none                    swap    defaults        0 0
  UUID="2186ad89-b271-4aec-87e9-2f662943333d" /mnt  xfs  defaults    0 0    //永久挂载sda1
  //默认格式 :UUID   挂载目录  文件系统  defaults  0  0  
## 日志
kernel —>物理终端(/dev/console)—> /var/log/dmesg

​ # dmesg 或 # cat /var/log/dmesg

/sbin/init

/var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息
/var/log/maillog:邮件系统产生的日志信息
/var/log/secure:与安全相关的日志信息

信息详细程度:日志级别

系统日志服务:

​ syslog:centos5

​ rsyslog:centos6,是syslog的升级版

​ 特性:

​ 多线程

​ 支持UDP,TCP,SSL,TLS协议

​ 支持使用MySQL、PGSQL和Oracle实现日志存储

​ 默认没启用此功能,需要加载rsyslog支持此类存储方式的模块,并配置其可使用mysql存储日志

​ 强大的过滤器,可实现过滤系统日志信息中的任何部分

​ 自定义输出格式

elasticsearch,logstash,kibana = elk

​ elasticsearch:存储,分析日志

​ logstash:日志收集工具

​ kibana:前端展示工具

syslog和rsyslog服务均有两个进程:

​ syslogd:系统,非内核产生的日志信息。

​ klogd:内核,专门负责记录内核产生的日志信息。

syslog服务的配置文件:/etc/syslog.conf

rsyslog服务的配置文件:/etc/rsyslog.conf

配置文件格式定义为: facility.priority action

facility可以理解为日志的来源或设备,目前常用的facility有以下几种:
auth #认证相关的
authpriv #权限、授权相关的
cron #任务计划相关的
daemon #守护进程相关的
kern #内核相关的
lpr #打印相关的
mail #邮件相关的
mark #标记相关的
news #新闻相关的
security #安全相关的,与auth类似
syslog #syslog自己的
user #用户相关的
uucp #unix to unix cp相关的
local0到local7 #用户自定义使用
* # *表示所有的facility
priority(log level)日志的级别,一般有以下几种级别(从低到高),级别越低,信息越详细:
debug #程序或系统的调试信息
info #一般信息
notice #不影响正常功能,需要注意的消息
warning/warn #可能影响系统功能,需要提醒用户的重要事件
err/error #错误信息
crit #紧急,比较严重的
alert #必须马上处理的
emerg/panic #会导致系统不可用的
* # *表示所有的日志级别
none #跟*相反,表示啥也没有
action(动作)日志记录的位置:
系统上的绝对路径 #普通文件,如:/var/log/xxx
| COMMAND #管道,通过管道送给其他的命令处理
终端 #终端,如:/dev/console
@HOST #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1
用户 #系统用户,如:root
* #登录到系统上的所有用户,一般emerg级别的日志是这样定义的

定义格式例子:

​ mail.info /var/log/maillog 表示将mail相关的,级别为info及info以上级别的信息同步记录到/var/log/maillog文件中

​ mail.* -/var/log/maillog 表示将mail相关的所有日志信息异步记录到/var/log/maillog文件中,路径前的“-”表示异步模式

​ auth.=info @10.0.0.1 表示将auth相关的,级别为info的信息记录到10.0.0.1主机上去。前提是10.0.0.1要能接收其他主机发来的日志信息

​ user.!=error 表示记录user相关的,不包括error级别的信息

​ user.!error 与user.error相反

​ *.info 表示记录所有的日志信息的info级别

​ mail.* 表示记录mail相关的所有级别的信息

. 表示 记录所有级别的所有日志信息

​ cron.info;mail.info 多个日志来源可以用分号隔开

​ cron,mail.info 与cron.info;mail.info是一个意思

​ mail.*;mail.!=info 表示记录mail相关的所有级别的信息,但是不包括info级别的

文件记录(/var/log/message)的日志的格式:

​ 事件产生的日期时间 主机 进程(pid): 事件内容

有些日志记录为二进制格式:/var/log/wtmp,/var/log/btmp

​ /var/log/wtmp:当前系统成功登录的日志,可使用last命令查看其内容

​ /var/log/btmp:当前系统失败的登录尝试的日志,可使用lastb命令查看其内容

​ lastlog命令:显示当前系统每一个用户最近一次的登录时间

配置rsyslog服务器:

​ 编辑配置文件(/etc/rsyslog.conf),将下列内容前面的注释去掉,然后重启rsyslog服务即可:

​ #$ModLoad imudp

​ #$UDPServerRun 514

​ #$ModLoad imtcp

​ #$InputTCPServerRun 514

配置使用基于mysql存储日志信息的rsyslog服务器:假定此处的mysql和rsyslog是两台不同的主机

​ 注意:请关闭防火墙和SELINUX

​ a) 确保mysql服务正常

​ b) 在rsyslog服务器上安装rsyslog-mysql模块(yum -y install rsyslog-mysql)

​ c) 在mysql服务器上授权一个用户能够对Syslog数据库有写权限

​ GRANT ALL ON Syslog.* TO ‘syslog’@‘172.16.%.%’ IDENTIFIED BY ‘syslogpassword’;

​ d) 配置mysql服务器,在主配置文件(/etc/my.cnf)中添加下面两行内容,并重启mysql服务

​ skip_name_resolve = on

​ innodb_file_per_table = on

​ e) 在rsyslog服务器上执行sql语句

​ mysql -usyslog -h172.16.100.9 -psyslogpassword < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

​ f) 配置rsyslog服务器能使用mysql存储日志。编辑/etc/rsyslog.conf文件并重启rsyslog服务

​ 在### MODULES ###段下面添加如下内容:

​ $ModLoad ommysql

​ 在### RULES ###段下面添加如下内容:

​ *.info;mail.none;authpriv.none;cron.none :ommysql:172.16.100.9,Syslog,syslog,syslogpassword

​ ommysql:表示使用ommysql模块存储日志至mysql

​ Syslog:表示mysql中的Syslog数据库

​ syslog:表示连接mysql的用户

​ syslogpassword:表示连接mysql的密码

​ g) 配置webserver,支持php

​ yum install httpd php php-mysql php-gd

​ service httpd start

​ h) 配置前端展示界面(loganalyzer软件)

​ tar xf loganalyzer-3.6.5.tar.gz

​ mv loganalyzer-3.6.5/src /var/www/html/loganalyzer

​ cp -a loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer/

​ cd /var/www/html/loganalyzer/

​ chmod +x *.sh

​ ./configure.sh

​ ./secure.sh

​ chmod 666 config.php #如果没有此文件则手动touch一个即可

​ 在浏览器上输入:http://IP/loganalyzer/install.php

源码安装三部曲

1、./configure --prefix=安装路径 --with
2、make //编译
3、make install //安装

//安装必要的工具
  [root@localhost ~]# yum -y install gcc gcc-c++
  [root@localhost ~]# yum -y install make
  [root@localhost ~]# yum -y install wget
  [root@localhost ~]# yum -y install pcre-devel
//下载
  [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.48.tar.gz		
  [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz
  [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
//解压
  [root@localhost ~]# tar xf apr-1.7.0 		
  [root@localhost ~]# tar xf apr-util-1.6.1
  [root@localhost ~]# tar xf httpd-2.4.48
  [root@localhost ~]# ls
  apr-1.7.0  apr-1.7.0.tar.gz  apr-util-1.6.1  apr-util-1.6.1.tar.gz  httpd-2.4.48  httpd-2.4.48.tar.gz
//进入apr-1.7.0目录,将配置文件configure中的 "$RM \$cfgfile" 删除或注释掉
  [root@localhost ~]# cd apr-1.7.0/
  [root@localhost apr-1.7.0]# vi configure
//./configure  --prefix=安装路径  --with
  [root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr
  [root@localhost apr-1.7.0]# make  && make install               #编译和安装  
//./configure  --prefix=安装路径  --with
  [root@localhost ~]# cd apr-util-1.6.1/
  [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  [root@localhost apr-util-1.6.1]# make && make install           #编译和安装
//./configure  --prefix=安装路径  --with
  [root@localhost ~]# cd httpd-2.4.48/
  [root@localhost httpd-2.4.48]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
  [root@localhost httpd-2.4.48]# make && make install            #编译和安装 
//关闭防火墙和selinux
  [root@localhost ~]# systemctl stop firewalld.service
  [root@localhost ~]# setenforce 0
  [root@localhost ~]# /usr/local/httpd/bin/apachectl start       #启动程序
//浏览器访问IP地址

xf httpd-2.4.48
[root@localhost ~]# ls
apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1 apr-util-1.6.1.tar.gz httpd-2.4.48 httpd-2.4.48.tar.gz
//进入apr-1.7.0目录,将配置文件configure中的 “$RM $cfgfile” 删除或注释掉
[root@localhost ~]# cd apr-1.7.0/
[root@localhost apr-1.7.0]# vi configure
//./configure --prefix=安装路径 --with
[root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.7.0]# make && make install #编译和安装
//./configure --prefix=安装路径 --with
[root@localhost ~]# cd apr-util-1.6.1/
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.6.1]# make && make install #编译和安装
//./configure --prefix=安装路径 --with
[root@localhost ~]# cd httpd-2.4.48/
[root@localhost httpd-2.4.48]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@localhost httpd-2.4.48]# make && make install #编译和安装
//关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# /usr/local/httpd/bin/apachectl start #启动程序
//浏览器访问IP地址


                    
这篇关于Linux命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!