Linux常用命令

1 OS操作系统原理

1.1 Linux系统引导过程

1)开机BIOS自检,加载硬盘。(计算机电源加电质检)
2)读取MBR,进行MBR引导。
3)grub引导菜单(Boot Loader)。(是计算机启动过程中运行的第一个软件程序)
4)加载内核kernel。(读取内存映像并进行解压缩操作,完成核心环境搭建)
5)启动init进程,依据inittab文件设定运行级别(内核加载完毕)
6)init进程,执行rc.sysinit文件。(设定PATH运行变量、设定网络配置、启动swap分区、设定/proc、系统函数、配置Selinux等。)
7)启动内核模块,执行不同级别的脚本程序。(加载系统内核模块)
8)执行/etc/rc.d/rc.local(将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。)
9)启动mingetty,进入系统登陆界面。

1.2 linux命令行快捷键

Tab 补全
\ 换行
ctrl + l 新启屏幕
ctrl + u 从光标删除到行首
ctrl + k 从光标删除到行尾
ctrl + c 终止命令
ctrl + z 后台暂停

linux操作系统

● https://juejin.cn/post/7234058546573230140?share_token=05fe99bf-f37b-4ea6-a0e0- cb38f3d2ec8c //linux 操作系统命令

● https://juejin.cn/post/7234467007717982268?share_token=6f008fba-4ae5-4236-a026- de30bf386310 //bandit 通关笔记

在线靶场:overthewire bandit
● 链接:https://overthewire.org/wargames/bandit/
bandit通关笔记:
https://juejin.cn/post/7234467007717982268?share_token=6f008fba-4ae5-4236-a026-de30bf386310

命令

shell   /bin/bash
命令格式 
命令字 [选项] [参数]
选项
    "-" 多个单字符选项组合在一起使用  ls -help = ls -h -e -l -p
    "--" 后跟单词                  ls --help = ls --help
参数
	命令字的处理对象:文件名、目录、用户名等
	个数可以是零到多个

1. 系统命令

时间

cal 2023  显示2023年日历表
ncal 2023 显示2023年日历表
date 设置日期时间
clock -w 将时间修改保存到BIOS

进程

ps
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路
径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"-A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
kill
kill -9
终止

内存

free 查看内存

磁盘

du
du [选项] [文件或者目录]
-a: 统计磁盘空间占用时包括所有文件(不仅仅是只统计目录)
-h:显示出目录或文件的大小(K、M),默认的大小位为字节(KB)
-s:只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小
df
df -hT [分区文件]

-a: 显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
-m: 以 MB 为单位显示容量;
-k: 以 KB 为单位显示容量,默认以 KB 为单位;
-h: 使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;
-T: 显示该分区的文件系统名称;
-i: 不用硬盘容量显示,而是以含有 inode 的数量来显示。

网络

hostname #查看机器名
host www.example.com       #把一个主机名解析到一个网际地址或把一个网际地址解析到一个主机名。
nslookup www.example.com   #用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
ip link show            #查看网卡信息
mii-tool                #用于查看、管理介质的网络接口的状态
ethtool eth0              #用于查询和设置网卡配置
netstat -tupl           #用于显示TCP/UDP的状态信息
tcpdump
抓包选项
	-c num  指定抓包数量
	-i interface
	-n 不做主机名解析
	-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
	-s len  设置数据包抓取长度
输出选项
    -q 打印简短信息
    -e 显示mac
    -X 输出包头部信息,会以16进制和ASCII两种方式输出
    -XX 比-X更详细
    -v 当分析和打印的时候,产生详细的输出
    -vv 比-v更详细
    -vvv 比-vv更详细
    -w test.pcap  保存
表达式
	host/net/port/portrange
		例如 host foo 、net 128.3、port 20、portrange 6000-6008
	src/dst/src or dst/src and dst
		指定方向,默认src or dst
		src and dst port 22
	tcp/udp/arp/ip/ether/icmp 
		协议
		tcp port 22
		udp portrange 700-7009


示例

1.默认启动
tcpdump -nn -i eth0 icmp
2.指定主机
tcpdump host kali
3.主机a 与b或c的通信
tcpdump host a and \( b or c \)
4.主机a与其他但不与b 的ip数据包
tcpdump ip  host a and not b
5. a发送的数据包
tcpdump host a src
6. 发送到a的数据包
tcpdump host a dst
7.监听本机的udp 123端口
tcpdump udp port 123
8.监听本机与192.168 段的通信,只抓10个包
tcpdump -c 10 net 192.168 
9.所有通过网关snup的ftp数据包
tcpdump 'gateway snup and (port ftp or ftp-data)'
10.抓取ping包 详细信息  明确192.168.226.1 ping
tcpdump -nn -i eth0 icmp and src 192.168.226.1	
	不能直接写 icmp src 192.168.226.1,因为icmp不支持这个选项
11.解析数据包
tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 22 
netstat
netstat -ano
netstat -tuln 查看开放的端口   ss -tuln

显示网络状态信息
-a显示所有连接和监听端口
-t(tcp)仅显示tcp相关选项
-u(udp)仅显示udp相关选项
-n拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
-o 显示对应的pid
ping
ping -c 5 www
ifconfig
route
route -n    #查看路由表
route add -net 0/0 gw IP_Gateway    #配置默认网关
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 
#配置静态路由到达网络'192.168.0.0/16'
route del 0/0 gw IP_gateway        #删除静态路由
查看网卡信息

ip link show

查看开放端口
netstat -tuln
ss -tuln
lsof -i
nmap 127.0.0.1
显示流量
tcpdump tcp port 80     #显示所有http协议的流量

切换用户

su root

su root
● sudo su //允许系统管理员让用户执行一些 root 权限的命令
● 在 linux 系统中,有些普通用户需要借助 root 帐号来执行一些操作,但我们并不能把 root 密码给
普通用户,就有了 sudo
● sudo 可以临时切换到指定帐号进行操作
● 使用方法:sudo [ -u 用户帐号] 需要执行的命令;切换到 root 时,可以直接执行 sudo 执行命令
即可;
● sudo -l :列出所有可以执行的命令
● 使用条件:
● 必须以 root 身份执行 visudo,添加需要执行 sudo 命令的用户;
● 执行 visudo,实际上修改的是/etc/sudoers 文件;
● 为什么要使用 visudo,而不直接使用 vim /etc/sudoers 呢?这是因数 visudo 在修改完成后可
以对语法进行检查
● 使用 visudo -c 进行语法检查,当 sudoers 文件有语法错误时,所有的 sudo 命令都无法使用

处理器

arch
显示处理器架构
x86_64
uname -m
显示处理器架构
x86_64

内核

uname -r
显示内核版本
6.5.0-kali3-amd64

其他

dmidecode -q
	显示硬件系统部件(SMBIOS/DMI)
hdparm -i /dev/hda 
	罗列一个磁盘的架构特性
hdparm -tT /dev/sda
	在磁盘上执行测试性读取操作
lspci -tv 罗列PCI设备
lsusb -tv 显示USB设备

halt 关机后关掉电源
shutdown 
	-r 关机后重启
	-h 关机
iconv -l 列出已知的编码

2 常用命令

管道符和重定向

重定向  >覆盖   >>追加
| 将前面命令的输出结果作为后面命令的参数使用
man ls | col -b > lshelp.txt

help

--help选项
	ping --help
man&info 使用手册  man全部  info分块
	man ping

man

man 5 passwd
man ls

man n passwd(待查的词 )
其中n:
0 /usr/include下的头文件
1 可执行程序和shell命令
2 系统调用
3 系统库函数
4 /dev下的特殊文件
5 文件格式和约定(比如/etc/passwd)
6 游戏
7 其它
8 仅root可用的系统管理命令
9 内核相关的内容

alias

alias ll='ls --color=auto'
unalias ll 删除ll别名
touch 创建文件或更新时间戳

gzip/bzip2/zip/rar

压缩 压缩后原文件会消失  .gz  .bz2
    gzip [-9] demo    
    bzip2 [-9] demo (慢,压缩比高)
    zip -r demo.zip demo
解压
	gzip -d  =  gunzip demo.gz
	bzip2 -d demo.bz2 = bunzip2 demo.bz2
	unzip demo.zip
其他参数 
	-v 显示执行过程详细信息   -dv
	-k 保留原文件
	-l 显示压缩文件的大小,未压缩文件的大小,压缩比(list)
	-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩
比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6

rar a file1.rar test_file          #创建一个叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1   #同时压缩 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar     #解压rar包
unrar x file1.rar   #解压rar包

tar

zxvf    解包 
zcvf	打包	tar zcvf demo.bz2.tar demo
	zcvf	打包多个文件	tar zcvf demo.bz2.tar demo1 demo2
ztf		查看

f	表示使用归档文件 (必须跟)
c	打包
x	解包
	-C : 解包时指定释放的目标文件夹
z	gzip	.gz
j	bzip2	.bz2
v	显示解压信息
-p : 打包时保留原始文件及目录的权限

举例
	tar zcf /root/etc.tar.gz /etc/   打包/etc/到/root/etc.tar.gz 先写归档文件名
	tar jcf /root/etc.tar.bz2 /etc/
	tar cf /root/etc.tar /etc/
	tar zxf /root/etc.tar.gz -C /tmp/  解包 -C /tmp/  不写则解包到当前目录
	tar ztf /root/etc.tar.gz 查看
	tar jxvf filename.tar.bz2  解压

gzip zip tar区别

gzip 只能压缩单个文件,而 tar 和 zip 可以压缩多个文件成一个归档文件
● gzip 压缩出来的文件后缀名为.gz,而 tar 压缩出来的文件后缀名为.tar,zip 压缩出来
的文件后缀名为.zip。
● gzip 压缩率较高,但不支持文件夹和文件的压缩和解压缩,tar 和 zip 则都支持文件夹
和文件的压缩和解压缩。
● gzip 压缩速度较快,因为它只压缩单个文件,而 tar 和 zip 压缩速度较慢,因为它们要
压缩多个文件。
● gzip 只能压缩文本文件,而 tar 和 zip 可以压缩所有类型的文件

base64 压缩/解码

-d 解码

vi编辑器

vim a.txt 进入命令模式
命令模式->输入模式 
	插入
    i 光标前
    I 当前行开始
    a 光标后
    A 行尾
    o 当前行的下一行
    O 当前行的上一行
    :  末行模式
行内跳转  home光标跳行首 end光标跳行尾
行间跳转(命令模式下) 
	1G或gg 首行
	G 末行
	10G 第10行
行号显示 :set nu 显示行号
	    :set nonu 取消显示行号
复制
	yy 复制整行
	10yy 从光标开始复制10行
删除
	dd删除光标所在行
	10dd 从光标处开始删除10行
	d^ 删除光标到行首
	d$ 删除光标到行尾
粘贴
	p   光标在粘贴的位置
	P(大写) 光标在粘贴内容后,连续多次粘贴用大写P
查找
	:/word 从上往下查找word
	:?word 从下往上查找word
	n定位下一个
	N定位上一个
撤销
	u 按一下撤销最近一次   万一用了ctrl + z后,用fg 1
	U 撤销所以
	ZZ 保存并退出 
保存与退出
	:W 保存
	:w /tmp 另存
	:q 未修改退出
	:q! 修改后不保存,强制退出
	:wq 保存后退出  = ZZ
编辑其他文件
	:r /etc/a.txt 在当前文件中读入其他文件内容
	:sp /etc/network 分屏编辑多个文件
		在a.txt中复制几行,切换到b.txt 粘贴
		分屏后切换编辑对象 ctrl+w 后 按↑ ↓
查找替换
	:s /old/new 当前行 第一个 old替换成new
	:s /old/new/g 当前行 所有
	:10,15/old/new/g 10-15行 所有
	:% s/old/new/g 整个文件 所有
	:s /old/new/c  加c对每个替换动作提示并提示确

sed

sed 's/stringa1/stringa2/g' example.txt 
#将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt           #从example.txt文件中删除所有空白行
sed '/ *#/d; /^$/d' example.txt   #从example.txt文件中删除所有注释和空白行
echo 'esempio' | tr '[:lower:]' '[:upper:]'    #合并上下单元格内容
sed -e '1d' result.txt          #从文件example.txt 中排除第一行
sed -n '/stringa1/p'            #查看只包含词汇 "string1"的行
sed -e 's/ *$//' example.txt    #删除每一行最后的空白字符
sed -e 's/stringa1//g' example.txt  
#从文档中只删除词汇 "string1" 并保留剩余全部
sed -n '1,5p;5q' example.txt     #查看从第一行到第5行内容
sed -n '5p;5q' example.txt       #查看第5行
sed -e 's/00*/0/g' example.txt   #用单个零替换多个零

3 文件管理

3.1文件类型

默认文件系统类型
XFS 日志文件系统
SWAP 交换文件系统
其他文件系统
EXT3、EXT4
FAT16、FAT32、NTFS
XFS、JFS...

3.2which find

查找 文件/命令

which ifconfig  只能查外部命令  
	which ifconfig 
		/usr/sbin/ifconfig
	rpm -qf /usr/sbin/ifconfig
		net-tools-2.0-0.25.20131004git.el7.x86_64
find [查找范围] [查找条件表达式]
	-name
	-size 使用+ - 设置超过或小于; k(小写k)、MB、GB
	-user
	-type 类型 普通文件(f)、目录(d)、块设备(如硬盘内存)(b)、字符设备文件(如键盘鼠标等)(c)、链接(l)等
	-a  and
	-o	or
find /boot -size +1024k -a -name "aaaa*"
find /etc/ -name hosts -o -name ifcfg-* | xargs -I {} cp -rf {} /root/
	xargs -I {}  将前面的内容逐条放入后面copy的中

3.3 ls、ln、cp、rm、mv

ls常用
	ls -a 显示所有
	ll  等同于 ls -l   显示详细信息
	lh  易读
ls [] 目录/文件  查看目录/文件信息
	-i  查看inode节点
	-l  详细信息     
	-h  文件大小易读     
	-A  查看所有文件(包括隐藏文件) -a 多显示 .   ..
	-d  目录本身    -lhd  常用
	-t  文件建立的先后时间排序文件 例如:ls -lt
通配符
	?
	*
ln 
	软链接  适用于文件或目录  跨分区
	硬链接  只适用于文件		只能同一分区
		inode节点是一致
		修改一个,另一个会变
		做备份使用,误删后能使用
	ln [-s] 源 链接文件或目标位置
cp 
	-r 递归复制所有文件及子目录
	-i 覆盖目标文件会提醒  
	-f 覆盖时不提醒。强制复制
	-p 复制时保留原有权限
rm
	-r 同时删除该目录下的所有文件
	-f 强制删除文件或目录
	-i 交互询问
	删除文件时把文件移走,不直接删除
rmdir
	删除空目录,非空的不能删除
		rmdir: 删除 "test" 失败: 目录非空
mv
	-f force强制的意思,若目标已存在,不会询问直接覆盖
	-i 若目标已存在,询问是否覆盖
	-u 若目标文件已经存在,且 source 比较新,才会升级 (update)

3.4 mkdir pwd

cd ~  家目录
pwd 显示当前工作目录

mkdir
	-p 创建多层目录
	-m 配置文件权限   不写默认755
		mkdir -m 711 test

3.5 cat more less tail head nl

查看文件内容

cat [] 文件名
-n显示行号
-b显示行号,不显示空行
more 文件名 全屏方式分页显示
	space 向下翻页
	enter 向下一行
	/字符串 向下搜寻字符串
	b向前翻页
	q退出
交换
	按ENter向下逐行滚顶 
	按空格向下翻屏 
	按q退出
less [] 文件名 类似more
	Page Up向 上翻页
    Page Down 或者 space向下翻页
	/字符串  查找内容
    	"n"下一个 "N" 上一个
    q退出
	ll /etc/ | cat -n | less 内容多时用less分页显示

head -n 文件名  查看文件开头几行 默认10行
	-n 行数 
tail -n 文件名  查看文件结尾几行 默认10行
	-f动态监视文件末行内容(循环读
取)
nl 文件名  显示行号
	-ba 空行显示行号
	-bt 空行不显示行号(默认)
	-n显示行号
		-n ln :行号在荧幕的最左方显示;
			44    	wangyu:x:1000:1000:wangyu:/home/wangyu:/bin/bash
        -n rn :行号在自己栏位的最右方显示,且不加 0 ;
        	    44	wangyu:x:1000:1000:wangyu:/home/wangyu:/bin/bash
        -n rz :行号在自己栏位的最右方显示,且加 0 ;
        	000044	wangyu:x:1000:1000:wangyu:/home/wangyu:/bin/bash
    -w 行号栏占用的位数 
        nl -n rz  -w 4 pass
            0044	wangyu:x:1000:1000:wangyu:/home/wangyu:/bin/bash

3.6 wc

统计文件内容

wc [] 文件名 统计文件中的单词数量等信息
-l 统计行数
-w 统计单词个数
-c 统计字节数

1.3.7 grep

检索和过滤文件内容

grep [] 查找条件 目标文件 查找并显示包含 查找条件 的行
-i 忽略大小写
-v 反转查找,输出与查找条件不相符的行
查找条件
	^Server  以Server 开头的行
	aa$      以aa结尾的行
	^$ 空行
ps aux | grep sshd | wc -l 
ps aux | grep [s]shd | wc -l
grep -v ^# a.txt | grep -v ^$ 不显示注释和空
find /etc -type f | xargs -I {} grep -l ServerName {}  找出/etc/中保护ServerName的文件

tree

tree         #显示文件和目录由根目录开始的树形结构(1)

4.用户,权限

Linux基于用户身份对资源访问进行控制

用户账户
	超级用户 root
	普通用户
	程序用户
组账户
	基本组(私有组)  一个用户只能属于一个基本组
	附加组(公共组)
UID和GID
	UID用户标识号
		root 0
		程序用户 1-499
	GID组标识号

4.3 useradd

添加用户

useradd [] 用户名
-u 指定UID号
-d 指定宿主目录。缺省为/home/     /etc/skel/
-e 指定失效时间
-g 指定基本组
-G 指定附加组
-M 不为用户建立并初始化宿主目录  创建程序用户时使用
-s 指定用户登录的shell  创建程序用户时/sbin/nologin
useradd 
-d /ftphome/mike  家目录
-g mike       基本组
-G ftpuser    附加组
-s /sbin/nologin  用户登录的shell
mike
例如:
useradd -d /home/sam -m -g users -G wheel -s /bin/bash -u 1001 sam
useradd -u 49 -M -s /sbin/nologin mysql
s错误 : 权限不足
mkdir -p /test/zhangsan    #zhangsan目录由root创建,权限为root
useradd -d /test/zhangsan  #zhangsan没用/test/zhangsan目录 权限,写入数据无权限
正确 : 只创建上一级
mkdir /test
useradd -d /test/zhangsan

4.4 passwd

用户密码操作

passwd [] 用户名
-d 清空密码,使之无密码即可登录
-l 锁定  -u 解锁用户 -S查看用户锁定状态

passwd zhangsan
echo 123.com | passwd --stdin lisi

4.5 usermod

更改用户账户属性

usermod [] 用户名
-l 更改用户名  usermod -l zs zhangsan   改为zs
-L 锁定用户账号
-U 解锁用户账号
-u -d -e -g -G -s与useradd含义相同
例 -d 改家目录时   su -l wangwu  切换用户
	usermod -d /test/wangwu wangwu 只改了/etc/passwd中的信息,并没改目录位置
	还需要 move /home/wangwu /test/wangwu	
例如: usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为
developer。

4.6 userdel

删除用户

userdel [-r] 用户名
-r删除家目录
例如:
# userdel -r sam
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)
的记录,同时删除用户的主目录。

4.7 group

/etc/group 组账户基本信息
/etc/gshadow 组账户密码信息
groupadd [-g GID] 组名    添加组   GID往多1500 ,尽量控制uid和gid一致
	groupadd -g 1000 yuganng
添加组
	useradd -G 1000 zhangsan   新建用户指定组为1000
	usermod -G yugang lisi     修改lisi的附加组为yugang
gpasswd [] 组账号名
	-a 向组内添加一个用户
	-d 从组内删除一个用户
	-M 定义组成员列表,以逗号分隔
		gpasswd -M zhangsan,lisi yugang 刷新yugang组里的成员为zhangsan,lisi
groupdel 组账户名
账号查询
	id [用户名]   查询用户身份标识 不加参数查 登录用户
	groups []    查询用户所属的组 不加同上
	finger []    查询用户详细信息 
	users、w、who  查询已登录到主机的用户信息

4.8 权限

			文件  |  目录
读r	查看文件内容   |  显示目录列表 
写w  修改文件内容   |  在目录中新建、移动、删除文件或子目录
执行x  运行程序     |  切换目录

-rw-r--r--. 1 root(属主) root(属组) 338 3月   7 22:18 b.txt
-
rw-  对应属主root
r--	 对应属组root
r--	 对应 other  例如zhangsan 

4.9 chmod

chmod [] 文件或目录
	[ugoa][+-=][rwx]  例u+w ug+w o-r  u=r
	nnn        chmod 644 a.txt
	-R 递归修改指定目录下所有子目录  chmod -R 644 abc
chown [] [-R] 文件或目录
	属主     chown zhangsan a.txt   更改a.txt的属主为zhangsan
	:属组
	属主:属组

4.10 用户账户的初始配置文件

/etc/skel 家目录模板
~/.bash_profile 用户每次登录时
~/.bashrc 用户进去新的Bash环境时
~/.bash_logout 用户退出登录时

4.11 权限控制之上的对象底层属性

lsattr  文件或目录
	-代表次控制位没有附加任何底层属性
chattr 修改
	i 全锁 chattr -i a.txt
		目录:可修改已有子对象,不可建立删除子对象
		文件:不可删除,改名,追加,修改
	a 修改锁  chattr +a a.txt
		目录:可以建立修改子对象,不可以删除子对象
		文件,可以追加内容,不可以修改删除(多用于日志)
SET位权限  基线检查把set位全删除
-rwsr--r-- 
其他用户执行该文件时,将拥有属主或者属组权限
chmoe u+s /usrbin/vim
切换到 other后,能强制修改 权限不够的文件
粘滞位
让多个用户在同一设置了开放权限的目录中只可以修改属于自己的文件
chmod o+t /share/

5 磁盘管理

/dev/hd  a  5
hd表示 IDE设备
sd表示 SCSI设备
磁盘的顺序号  以 a、b、c...表示
分区的顺序号  以1、2、3...表示  1234物理分区 5678逻辑分区

inode节点与块

元数据:创建者,创建日期,大小等,称索引节点
inode bitmap:inode使用情况
block bitmap:块使用情况
数据块:由多个扇区组成,常见4k一块,存放文件数据和目录数据

inode区:
	inode表  inode号->目录块位置
	inode bitmap
	block bitmap
数据区:
	inode号->文件名

5.1 磁盘分区挂载

(1)创建分区

fdisk -l [磁盘设备] 或 fdisk [磁盘设备]
m 查看操作指令的帮助信息
p 列表查看分区信息     ID列:分区类型
n 新建分区
d 删除分区
t 变更分区类型  b=fat32  83=linux  82=swap 8e=Linux LVM
w 保存分区设置并退出
q 放弃分区设置并退出

(2)保存退出后 进行格式化

mkfs -t 文件系统类型  分区设备
或者
mkfs.ext4 /dev/sdb1         格式化成ext4
mkfs.vfat -F 32 /dev/sdb2   格式化成FAT32

格式化文件交换分区

mkswap 分区设备       
mkswap /dev/sdb5
grep Swap /proc/meminfo 查看当前文件交换分区大小
swapon /dev/sdb5  启用分区
grep Swap /proc/meminfo 查看启用分区后文件交换分区大小

(3)挂载

mount [-t 类型] 存储设备 挂载点目录
mount -o loop IOS镜像文件 挂载点
例
	mount /dev/sdb1 /mailbox
	mount | tail -2
	df -hT | tail -2 

永久挂载

vim /etc/fstab
/dev/sdb1  /mailbox   ext4   defaults  0     0
第一个0   是否加入备份
第二个0   是否开机自检
或者 把mount命令写到开机脚本里

卸载

umount 存储设备位置
umount 挂载点目录
	umount /dev/sdb1
	umount /mailbox

5.2 LVM逻辑卷

动态调整磁盘容量,从而提交磁盘管理的灵活性

注意 /boot分区用于存放引导文件 ,不能基于LVM创建

图形界面管理工具 system-config-lvm

Raid 0   最少两块   同时往多个盘中读写数据
Raid 1   只能两块   镜像卷
Raid 0 + Raid 1      Raid 1 + Raid 0
Raid 5   最少三块   奇偶校验 支持一块损坏
			 物理卷	   卷组		  逻辑卷
Scan扫描		pvscan		vgscan		lvscan
Create建立	pvcreate	vgcreate	lvcreate	
Display显示	pvdisplay	vgdisplay	lvdisplay
Remove删除	pvremove 	vgremove	lvremove
Extend扩展				vgextend	lvextend
Reduce减少(无法确定从哪减少) vgreduce	   lvreduce

PV(物理卷)
	pvcreate
VG(卷组)
	vgcreate
	vgdisplay
	vgextend
LV(逻辑卷)
	lvcreate
	lvextend

常用命令

[分区](整块硬盘作为LVM不需要分区)
pvcreate 设备名1 [设备名2 ...]
vgcreate 卷组名 物理卷名1  物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvcreate -l 块数(PE Size) -n 逻辑卷名 卷组名   全部分走的时候用-l
vgextend 卷组名 物理卷名1
lvextend -L +大小 /dev/卷组名/逻辑卷名  注意 + ,不写就是刷新空间大小
resize2fs 逻辑卷名              把扩展的空间格式化
vgdisplay

示例

添加三块硬盘 sdb sdc sdd
将sdb sdc进行LVM制作逻辑卷,挂载到/share
再使用sdd硬盘扩展这个逻辑卷(分区)
可选操作:对磁盘进行分区,修改分区ID为8e
	fdisk /dev/sdb
		n
		t  8e
		w
创建物理卷
	pvcreate /dev/sdb1 /dev/sdc 
创建卷组
	vgcreate testvg /dev/sdb1 /dev/sdc
查看卷组
	vgdisplay
创建逻辑卷testlv1
	lvcreate -L 500M -n testlv1 testvg
格式化逻辑卷
	mkfs.ext4 /dev/testvg/testlv1
挂载
	mkdir /share
	mount /dev/testvg/testlv1 /share
扩展
	pvcreate /dev/sdd
	vgextend testvg /dev/sdd
	lvextend -L +100M /dev/testvg/testlv1  从500 to 600
	resize2fs /dev/testvg/testlv1

5.3 配额

实现磁盘限额的条件
安装xfsprogs 与 quota软件包
作用范围:针对指定的文件系统(分区)
限制对象:用户账户、组账户
限制类型
	磁盘容量(默认单位为KB)      
	文件数量(通过inode节点)    
限制类型
	软限制   警告 还能继续使用
	硬限制   不能继续使用
以支持配额功能的方式挂载文件系统
检测磁盘配额并生成配额文件
	quotacheck -augvc
	自动生成
编辑用户和组账号的配额设置
	vi /etc/fstab   永久配置
	dev/mapper/mail_store-mbox /mailbox ext4 defaults,usrquota,grpquota 0 0 
		使用usrquota(对用户),grpquota(对组)
		重启生效
	mount -o remount,usrquota,grpquota /dev/mail_store/mbox /mailbox
		remount 选项,重新挂载,未挂载时不加
		立刻生效
启动文件系统的磁盘配额功能
验正磁盘配额功能
查看用户或分区的配额使用情况

6. 进程管理

init进程

Systemd进程
代替init进程,成为主流
程序位于/usr/lib/systemd/systemd
Systemd的优势
向下兼容
更快的启动速度,集中化命令管理,更合理的命令结构

由 Linux 内核加载运行/sbin/init程序
是系统中第一个进程
PID (进程标记)号永远为1
Systemd进程

代替init进程,成为主流
程序位于/usr/lib/systemd/systemd
Systemd的优势
向下兼容
更快的启动速度,集中化命令管理,更合理的命令结构

运行级别所对应的Systemd目标

运行级别   Systemd的target          	 说明
	0		target					关机
	1		rescue.target			单用户模式,不需要密码验证即可登录
	2		multi-user.target		用户定义/域特定运行级别。默认等同于3
	3		multi-user.target		字符界面的完整多用户模式,大多数服务器主机运行在此级别
	4		multi-user.target		用户定义/域特定运行级别。默认等同于3
	5		graphical.target			图形界面的多用户模式,提供了图形桌面操作环境
	6		reboot.target			重新启动,使用该级别时将会重启主机	

​```
查看运行级别 
runlevel命令
systemctl 工具
切换运行级别
init 0 关机 
init 3 切换至字符界面  systemctl isolate multi-user.target 
init 5 切换图形界面 systemctl isolate graphical.target
设置永久运行级别
​```
系统控制服务

systemctl 控制类型 服务名称
start stop restart reload重新加载 status
系统服务管理工具
	ntsysv工具
		提供一个交互式、可视化窗口
	systemctl工具
查看系统服务的启动状态
	systemctl is-enabled 服务名称
设置系统服务的启动状态
	systemctl enable/disable 服务名称

8 iptables --firewall

/etc/selinux/config

四表五链

关防火墙
systemctl stop firewalld
iptables -F
关SELINUX setenfirce 0

9 软件安装及管理应用程序

9.1 应用程序与系统命令的关系

文件位置 
	系统命令 /bin  和 /sbin 或Shell内部指令
	应用程序 通常在 /usr/bin 和/usr/sbin中
典型应用程序的目录结构
普通执行程序文件  /usr/bin
服务器执行程序文件和管理程序文件/usr/sbin
应用程序配置文件 /etc
日志文件   /var/log
应用程序文档文件  /usr/share/doc
应用程序手册页文件 /usr/share/man

9.2 rpm包管理工具

rpm -q[] [软件名]
-qa 查看 已安装的 所有RPM软件包  (常用)
-qi 查看 软件 详细信息 (常用)
-ql 查询 软件 安装目录 (常用)
-qf 查询  文件或目录  属于哪个RPM包  (常用)
	which vim  // /user/bin/vim
	rpm -qf /usr/bin/vim  查出是哪个rpm包
其他参数
	-qc 仅显示指定软件包安装的配置文件
	-qd 仅显示指定软件包安装的文档文件
rpm -qp[] RMP包文件
-qpi 查看 .rpm安装包 详细信息
-qpl 查看 .rpm安装包 包含的目录、文件列表
-qpc	配置文件列表
-qpd	文档文件列表
安装或升级RPM软件
rpm [] RPM包文件
-i 安全一个新的rpm
-U 升级 若原本未装 则进行安装
-F 更新 若原本未装 则放弃安装
-h 显示安装进度
-v 显示安装详细信息
-ivh   -Uvh
实例
卸载RPM软件
rpm -e 软件名
"--nodeps"选项忽略依赖
重建RPM数据库
rpm --rebuilddb  或者rpm --initdb  
导入验证公钥验证
rpm --import /media/cdrom/RPM-GPG-KE..

9.3 卸载并安装ifconfig

1. 查看 命令shell位置
	which ifconfig    #/usr/sbin/ifconfig
2. 查看npm包
	rpm -qf /usr/sbin/ifconfig   #net-tools  得到npm包
3. 卸载
	rpm -e net-tools --nodeps  卸载
4.安装
	mount /dev/sr0 /media  挂载光盘
	ls /media/Packages | grep net-tools 查看rpm包
	rpm -Uvh /media/Packages/net-tools 安装

9.4源代码编译安装程序

编译安装源代码包:
tallball封包
	.tar.gz 和 .tar.bz2
	软件素材https://sourceforge.net/
完整性校验
	md5sum校验工具
	#md5sum axel-1.0a.tar.gz
确认源代码编译环境
	需安装支持C/C++程序语言的编译器
	gcc、gcc-c++
	make

安装流程

1.下载源代码安装包
2.tar解包
	将软件包释放到/usr/src/目录
	tar zxf httpd-2.tar.gz  /usr/src/
3. ./configure配置
	使用 源码目录中的configure脚本
	执行 ./configure --help 可以查看帮助
	./configure	--prefix=/usr/local/apache  必须设置安装路径(不设置的话会把安装目录分散到整个文件系统中)
4.make编译
5.make install安装

9.5 本地yum源

挂载iso镜像
mount -t iso9660 /dev/sr0 /mnt/cdrom
vim centos7.repo
[Centos7]
name=centos7-server
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

目录

proc

/proc/cpuinfo

显示CPU info信息

/proc/interrupts

显示中断

/proc/meminfo

显示内存使用

/proc/swaps

显示哪些swap被使用

/proc/version

显示内核版本

/proc/net/dev

显示网络适配器及统计

/proc/mounts

显示已加载的文件系统

etc

存放系统配置文件

passwd

用户信息文件

/etc/passwd
root	:   x	  :	0   :0       :	root  :	/root  :	/bin/bash
用户账户 : 密码占位符: UID :基本组GID: 用户说明 : 宿主目录 :登录环境
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
wangyu:x:1000:1000:wangyu:/home/wangyu:/bin/bash
/bin/bash  正常登录系统所使用的系统环境,设为/bin/bash 此用户能登录系统环境
/sbin/nologin 不能登录操作系统

shadow

密码

/etc/shadow  用:隔了九段
root:$6$bqGaqeNbwDgFr2Mp$vPOHolUU0bgWeLTo6ZPVP4ZVtCLWYhPfTuDChPSGPNSalui7Cqcq6ZZz46JFGPb8Tl0tNFbEtcyvfoCAu9Zgf.::0:99999:7:::
ntp:!!:19417::::::
ftp:*:18353:0:99999:7:::
	1. root 用户名
	2. $6$  密码  
		$开头需要登录  
		!!不能登录(锁定) passwd -l 
		! 不能登录(锁定) usermod -L 
	3. 该账户上次修改日期距离1970.1.1相隔多少天
	4. 密码最短使用期限 0代表无限制        多少天之内不能修改密码
	5. 密码最长使用期限 99999代表无限制    多少天提示修改密码
	6. 密码过期前N天提醒修改密码 7表示提前七天提醒
	7. 密码过期后宽限天数,超过后账户不可用,需管理员解锁
	8. 账户过期时间与1970.1.1 相隔多少天
	9. 保留未使用

group

用户组

kali:x:1000:

gshadow

用户组密码

kali:!::
kaboxer:!::kali
组名:加密密码:组管理员:组附加用户列表

sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO="static"		#dhcp
IPADDR="192.168.226.20"
NETMASK="255.255.255.0"
GATEWAY="192.168.226.2"
IPV6_PRIVACY="no"
DNS1=8.8.8.8

network/interfaces kali

auto eth0
iface eth0 inet static       #dhcp
address 192.168.226.10
netmask 255.255.255.0
gateway 192.168.226.2
dns-nameservers 8.8.8.8 114.114.114.114

/etc/default/useradd

用户配置文件

/etc/apt/sources.list kali

系统更新文件

#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#阿里云
#deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#东软大学
#deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
#deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
#kali源
#deb http://http.kali.org/kali kali-rolling main contrib non-free
#deb-src http://http.kali.org/kali kali-rolling main contrib non-free

更改后
	执行apt-get update   命令完成更新
	注意:如果出现没有数字签名问题,那就是需要下载证书
		wget archive.kali.org/archive-key.asc		#下载证书
		apt-key add archive-key.asc					#添加证书
	apt-get install 需要下载的软件
sudo apt-get clean 清理旧软件缓存
sudo apt -f install 修复损坏的软件包
sudo apt update 更新自带软件库
sudo apt-get update 更新软件
sudo apt-get dist-upgrade 更新系统
sudo apt --fix-broken install 解决依赖关系缺少问题
sudo reboot 重启系统

bin

存放二进制可执行文件

sbin

存放二进制可执行文件,只有root才能访问

usr

用于存放共享的系统资源

home

存放用户的根目录

root

超级用户目录

dev

用于存放设备文件

lib

存放跟文件系统中的程序运行所需要的共享库及内核模块

mnt

系统管理员安装临时文件系统的安装点

boot

系统引导时使用的各种文件

tmp

存放各种临时文件

var

存放运行时需要改变数据的文件

/var/lib

程序中需要调用或改变的数据保存位置

如 Mysql 的数据库保存在 /var/lib/mysql/目录中

/var/log

登录文件放置的目录

/var/log/messages 、/var/log/wtmp

1: /var/log/syslog:这是系统的主要日志文件,记录了许多与系统相关的信息。在某些
Linux 发行版中,这个文件可能被称为/var/log/messages。
● 2: /var/log/auth.log:此文件记录了与身份验证和授权相关的活动。在某些 Linux 发行版
中,这个文件可能被称为/var/log/secure。
● 3: /var/log/kern.log:此文件记录了内核相关的信息和错误。
● 4: /var/log/boot.log:包含了系统启动过程中的日志信息。
● 5: /var/log/dmesg:记录了内核缓冲区的消息,包括硬件和驱动程序相关的信息。
● 5: /var/log/cron.log:记录了计划任务和 cron 作业相关的信息。

/var/run

一些服务和程序运行后,它们的PID(进程ID)保存位置

/var/spool

一般是临时存放,随时会被用户所调用的数据

/var/spool/mail/ 存放新收到的邮件

/var/spool/cron/ 存放系统定时任务

/var/www

RPM包安装的Apache的网页主目录

/var/nis 和/var/yp

NIS服务机制所使用的目录

nis 记录所有网络中每一个client的连接信息

yp 是linux的nis服务的日志文件存放的目录

/var/tmp

一些程序在安装或执行时,需要在重启后使用的某些文件,此目录将该文件暂时存放起来,完成后再删除

shell

shell基础

标准输入 /dev/stdin
标准输出 /dev/stdout
标准错误 /dev/stderr        2>    2>>
混合输出  &>
awk 
	ifconfig ens33 | grep inet | grep -v inet6 | awk '{print$2}'| awk -F . '{print$1}' 
		用. 分割ip
	route -n | grep UG | awk '{print$2}' 
1.创建shell脚本
	vim demo.sh
2.添加执行权限	
	chmod +x demo.sh
3.执行
	方法一: ./demo.sh
	方法二:sh /demo.sh
	方法三: source /demo.sh
#!/bin/bash  脚本声明
# demo       注释信息
ls           可执行语句
echo "友好提示信息"

shell变量

自定义变量

声明
	TEST=123333
	单引号与双引号不一样
		A3 = ‘$A1 $A2’   字符串
		A3 = "$A1 $A2"   变量A1 A2 赋值
	`` 反撇 $()  
		A4 = `df -hT | grep /$`  赋值变量执行结果
		A4 = $(df -hT | grep /$)
		/dev/mapper/centos-root xfs 17G 4.7G 13G 28% /
使用
	$TEST
	

交互式赋值

read -p “IP address:“

全局变量

export PATH=hello
$export

运算符

expr
+
-
\*	乘
/
%	取模

环境变量配置文件

/etc/profile
~/.bash_profile
常用环境变量
PWD、PATH、USER、SHELL、HOME

位置变量

$n  
$#  位置变量个数
$*  所有位置变量
$?	上一条命令执行结果后的状态,成功是0,失败是非0
$0  当前执行的进程/程序名  ,一般用于提醒   xx程序被执行了

判断

​ test [ 条件]

if [  ]
then
else
fi

循环

#!/bin/bash
for i in "httpd mysql dhcp samba"
do
rpm -e $i --nodeps
done

从文件读
for i in `cat /root/user`
useradd $i
#! /bin/bash
for i in 22 25 29 33 44 66 87
do
a1=$(expr $i % 2)
if [ $a1 -eq 1 ]
then
echo $i >> /root/jishu
else
echo $i >> /root/oushu
fi
done
i=1
while [ $i -le 100 ]
do
echo $i >> /root/test.txt
let i++
done

shell脚本

shell计划任务

服务

ssh

kali中安装
sudo apt-get install ssh
service ssh start/stop/restart/status,启动/停止/重启/状态

远程连接

vi /etc/ssh/sshd_config
PermitRootLogin yes

2.Linux中级

2.1 shell脚本开发(bash 逻辑语句 变量 文本处理)

2.2 nfs smb ftp tftp iscsi

2.3 dns 服务

2.4 telnet openssh openssl

2.5 httpd http协议

2.6 LAMP–Mysql

2.7 nginx

2.8 网站缓存的相关知识

3.Linux高级

3.1 集群

3.2 虚拟化

3.3 大数据

4.其他内容

4.1监控平台(zabbix后端数据存储 zabbix平台 前端数据显现90)

4.2自动化运维(ansible pippet saltstack)

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值