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
- 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(动作)日志记录的位置:
- 源码安装三部曲
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-BlC0Gb2n-1625974995818)(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-mkconfing -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-mkconfing -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地址