Linux
文件管理命令
1.目录
boot 启动
etc 配置
home家
root超管家
proc进程目录
tmp临时
var日志邮件
bin命令
sbin超管命令
mnt挂载目录
media媒体挂载
usr应用程序
lib库
2.创建文件
touch 文件名字 创建文件
3.创建目录
mkdir 目录和文件名 创建目录
mkdir -p /abb/def/
4.移动/更名
mv 文件1 文件2 文件N 目标目录 移动、剪切
5.复制/拷贝
cp -r 文件1 文件2 文件N 目标目录 复制
6.查看内容
cat 文件 查看文件内容
sort <文件 对文件内容排序
more 翻页
head 头部、文件开始
tail 尾部、文件末尾
grep 'abc' 文件 查找关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YTiaZxMM-1655050253296)(C:\Users\yue’yue\AppData\Roaming\Typora\typora-user-images\image-20220406153016601.png)]
Linux grep 命令 | 菜鸟教程 (runoob.com)
7.修改文件
vi/vim 文本编译
光标定位
hjkL //上下左右
0 $ //行首行尾
gg G //页首页尾
3G 进入第三行
/string (n N 可以循环的) //查找字符,按n键选下一个(重要)
文本编辑
yy 复制
dd 删除
p 粘贴
u undo撤销
进入其它模式
a 进入插入模式
i 进入插入模式
o 进入插入模式
A 进入插入模式
: 进入末行模式(扩展命令模式)
v 进入可视模式
ESC 返回命令模式
保存退出
:w 保存
:q 退出
:wq 保存并退出
查找替换
:范围 s/原内容/新内容/全局
:1,5 s/root/qianfeng/g 从1-5行的root 全部替换为qianfeng
另存为
:w file9.txt 另存为 file9.txt
:set nu 设置行号
:set nonu 取消设置行号
:set list 显示控制字符
Linux vi/vim | 菜鸟教程 (runoob.com)
重定向
cat <1.sh
sort <stu01 #对文件内容排序
cat <<EOF >1.sh #输入内容到1.sh遇到EOF停止
cat <1.sh >stu01 将1.sh内容替换掉stu01内容
rm -rf 目标或目录的路径 删除
chmod 命令主要用于修改文件或者目录的权限
chattr #用于设置文件的隐藏权限。
lsattr #用于显示文件的隐藏权限。
diff 比较两个文件
.tar 打包文件或者目录 tar -cvf -xvf
.tar.gz 打包并压缩具有gzip属性 tar -czvf -xzf
.tar.bz 打包并压缩具有bz2属性 tar -cjvf -xjf
'https://www.runoob.com/w3cnote/linux-tar-gz.html'
.gz 打包单个文件,一般情况下源文件消失只保留压缩文件 压缩比较高 gzip gzip -c gunzip
.bz2 gzip升级版是bzip2指令 创建压缩文档保留源文件 bzip2 -k bunzip
.zip 打包文件或者目录,windows 常用,但是压缩比一般 zip -r unzip
du -h : 展示当前目录 文件夹的大小信息
find . -ctime 20 将当前目录及其子目录下所有最近20天内更新过的文件列出
find . -name "*.c" 将当前目录及其子目录下所有文件后缀为.c的文件列出来:
find -newer /etc/hosts > hosts.new 将查找出来的内容存到新文件里面
文件属性 | 文件类型 |
---|---|
- | 常规文件,即file |
d | 目录文件 |
b | block device 即块设备文件,如硬盘;支持以block为单位进行随机访问 |
c | character device 即字符设备文件,如键盘支持以character为单位进行线性访问 |
l | symbolic link 即符号链接文件,又称软链接文件 |
p | pipe 即命名管道文件 |
s | socket 即套接字文件,用于实现两个进程进行通信 |
用户管理
1.用户信息配置文件
/etc/passwd(用户名:密码占位:UID:GID:DESC:home:shell)
/etc/shadow(用户名:密码:最小时间:最大时间:警告时间:失效时间:不活跃时间:保留)
/etc/group(组名:组密码占位:GID:组员)
/etc/gshadow(组群口令)
2.创建用户
/*创建用户*/ useradd -s shell -u(UID) -g(GID) -d目录 -c描述 用户名
usermod -aG 组名 用户名 (将用户加入某个组)
/*修改密码*/passwd uesr01
userdel -r
/*新建组*/groupadd
groupdel
3.权限设置
1.控制用户对文件资源的访问
2.读写执行
3.属主,属组,其他
4.授权 chmod 对象 赋值符 权限 文件
chown 用户名.组名 文件
ps 查看运行进程
tail 查看文件的内容,常用参数 -f 查阅正在改变的日志文件
groupadd net01 -g 1007 创建用户并指定gid
grep 'net01' /etc/group 查看/etc/group中组net01信息
grep 查找文件里符合条件的字符串[-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][范本样式][文件或目录...]
groupdel net01 删除组
setfacl -m[-b -x] u:alice:rw /home/test.txt
命令 设置 用户或组:用户名:权限 文件对象
getfacl 显示文件或目录的ACL
suid 是程序的使用者,临时获得属主的权限
chattr 用于改变文件属性。
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
更改权限 使用符号:u用户 g组 o其他 a所有人 r读=4 w写=2 x执行=1
语法: chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x)文件/目录
chmod u+s /usr/bin/cat 让所有用户以root身份使用cat命令
bash 执行文件(root)
chown: 设置一个文件属于谁,属主
语法: chown 用户名.组名 文件
chgrp: 设置一个文件属于哪个组,属组
setfacl 细分linux下的文件权限。 https://blog.csdn.net/qwq_qaq/article/details/54882203
which 用于查找文件
lsattr 用于显示文件属性。
echo 字符串 >> 文件名 追加字符串到文件中
umask 命令指定在建立文件时预设的权限掩码。
"drwxr-xr-x"="777-022=755"。
第04章_进程管理
查看进程 ps aux
ps aux | wc -l
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.5 104032 11712 ? Ss 15:52 0:00 /usr/li
USER(运行进程的用户)
PID(进程ID)
%CPU(CPU占用率)
%MEM(内存占用率)
VSZ(占用虚拟内存)
RSS(占用实际内存)
TTY(进程运行的终端)
STAT(进程状态) #R 运行 S 睡眠 T 停止 Z 僵尸 X 死掉
START(进程启动时间)
TIME(进程占用CPU的总时间)
COMMAND(进程文件,进程名)
ps aux | grep vim 查找包含vim的进程
进程排序 ps aux --sort %cpu (-%cpu反向)
ps -ef 查看父子关系(PID-PPID)
自定义显示字段 ps axo 选项,选项,选项
任务管理器 top
top - 20:36:40 up 4:43, 1 user, load average: 0.00, 0.00, 0.00
#序名-系统时间 运行时间 登录用户数 CPU负载 1 5 15 分钟
Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie
#总进程数 运行数 睡眠数 停止数 僵死数
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
#CPU使用占比 us用户 sy(systeam)系统 ni(nice)优先级 id(idle)空闲 wa(wait)等待 hi硬件 si软件 st虚拟机
MiB Mem : 1969.0 total, 1498.5 free, 142.8 used, 327.6 buff/cache
#物理内存K total总共2G free空闲 used使用 cache缓存硬盘容量
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1681.1 avail Mem
#交换分区 total总共2G free空闲 used使用 avail下次可用的空间
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
#-- -- 系统优先级 用户优先级 虚拟内存 物理内存 共享内存 状态 CPU 内存 运行时间 命令
1 root 20 0 104032 11712 9116 S 0.0 0.6 0:01.77 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
top常用内部指令
h/?帮助
M 按内存使用排序
P 按CPU的大小排序
N 以PID的大小排序
< 向前
> 向后
z彩色,Z设置彩色,使用数字调整
top技巧
#top -d 1 每一秒刷新
#top -d 1 -p 10126,1,2 查看指定
top -p PID
'信号控制
给进程发送信号(kill -l列出所有支持的信号)
编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断 Ctrl+C
3) SIGQUIT 键盘退出 Ctrl+\,类似SIGINT
9) SIGKILL 强制终止,无条件
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 暂停
20) SIGSTP 键盘暂停 Ctrl+Z
kill -编号 PID #执行kill程序
nice -n -5 sleep 6000 & 调整程序的优先级(-20 0 19)越低优先级越高
renice -11 PID 修改优先级
fg 1/2/3 命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行
bg 命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号 & 的效果是相同的,都是将其放到系统后台执行。
Ctrl+Z 快捷键的方式,可以将前台工作放入后台后,后台进程会处于暂停状态,此时,可以使用 bg 命令,让后台工作继续在后台执行。
jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务
kill %2 杀死第二个进程
/proc进程目录
/proc/cpuinfo CPU进程文件
/proc/meminfo 内存进程文件
/proc/cmdline 内核
第五章 FD简介
系统时间 date
垃圾桶 /dev/null
终端 /dev/pts/0、1、2
tee 管道
cat files.txt |xargs rm -rvf
第五章 存储管理
fdisk /dev/sdb 新磁盘
#MBR
#主分区(4个) 拓展分区,逻辑分区
partprobe /dev/sdb 刷新磁盘分区表
mkfs.ext4 /dev/sbd1 格式化磁盘、创建文件系统
(xfs ext4 fat)
mkdir /mnt/disk1
mount -t ext4 /dev/sdb1 /mnt/disk1/ 挂载
umount /mnt/disk4/ 卸载挂载分区(会丢失数据)
df -Th 查看挂载
mount
fdisk -l /dev/sdb 列出信息
#永久挂载
vim /etc/fstab
/dev/sdb1 /mnt/disk1 ext4 defaults 0 0
磁盘 挂载点 文件系统类型 默认选项 优先级 优先级
使用挂载命令 mount -a
#LVM 逻辑卷管理 目的:随意扩展大小
PV物理卷(一块硬盘或多块) VG卷组(一堆磁盘的统称) LV逻辑卷(一个逻辑分区,一个分区)
lsblk 命令 用于列出所有可用块设备的信息
1.将物理磁盘,转换成物理卷-PV
#pvcreate /dev/sdc
1.1查看pv信息
#pvscan
#pvs
#pvdisplay
2.创建卷组-VG
#vgcreate vg1 /dev/sdc
3.#lvcreate -L 200M -n lv1 vg1
指定大小,单位M,G
创建逻辑卷 -L大小 -n卷名 vg1组名
4.创建文件系统/格式化
#mkfs.ext4 /dev/vg1/lv1
/dev/卷组名/逻辑卷名
5.创建挂载点
mkdir /mnt/lv1
6.挂载
mount /dev/vg1/lv1 /mnt/lv1
#管理
Ctrl+r 查找之前使用过的命令
history 查看终端使用过的所有命令
#扩容
#lvextend -L +200M /dev/vg1/lv1
增加200M给lv2
#resize2fs /dev/vg1/lv1
刷新 再次观察df-hT的分区大小
#满了之后
vgs 查看vg
扩大vg vgextend
pvcreate /etc/sdd
创建PV。而后使用第二步,将PV增加到VG中
vgextend vg1 /dev/sdd
扩展vg
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3eDkzIn-1655050253297)(C:\Users\yue’yue\Desktop\新建文件夹\1.png)]
#swap交换分区
查看 free -m
增加 准备/dev/sde硬盘,划分为1G分区
fdisk /dev/sde
partprobe /dev/sde
ll /dev/sde*
格式化 mkswap /dev/sde1
挂载 suapon /dev/sde1
第六章 文件系统
mkfs [-V] [-t fstype] [fs-options] filesys [blocks] 用于在特定的分区上建立 linux 文件系统。
第七章 储存管理2
RAID1
RAID2
RAID5
mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{g,h,i,j}
mdadm -D /dev/md0
yum -y install mdadm #安装命令
watch -n 1 '命令' watch 是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了!
(10条消息) raid5什么意思?如何做raid5?raid5 几块硬盘?_ocean1010的博客-CSDN博客_raid5
(11条消息) Linux-RAID详解及配置_nicajonh的博客-CSDN博客_linux raid配置
第八章 文件查找
which 命令查找
find 文件查找,针对文件名
locate 文件查找依赖数据库
alias 命令用于设置指令的别名。 alias[别名]=[指令名称]
unalias name #name为你要删除的别名名称
locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。 updatedb 更新locate数据库
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find path -option [ -print ] [ -exec -ok command ] {} \;
命令 路径 选项
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来
# find . -name "*.c"
将当前目录及其子目录中的所有文件列出:
# find . -type f
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
# find . -ctime 20
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
压缩、解压
tar -cf etc.tar /etc
解压tar -xf etc.tar
tar -czvf etc-gzip.tar.gz /etc #z是gzip
tar -bjf etc-bzip.tar.bz /etc #j是bzip
tar -cJf etc-xzip.tar.xz /etc #J是xzip
第九章 软件管理
阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)
linux yum 命令 | 菜鸟教程 (runoob.com)
1. 列出所有可更新的软件清单命令:yum check-update
2. 更新所有软件命令:yum update
3. 仅安装指定的软件命令:yum install <package_name>
4. 仅更新指定的软件命令:yum update <package_name>
5. 列出所有可安裝的软件清单命令:yum list
6. 删除软件包命令:yum remove <package_name>
7. 查找软件包命令:yum search <keyword>
8. 清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
yum provides <命令> 查询命令出处
Linux rpm命令 | 菜鸟教程 (runoob.com)
用法: rpm [选项...]
-a:查询所有套件;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合"-l"参数使用;
-d:只列出文本文件,本参数需配合"-l"参数使用;
-e<套件档>或--erase<套件档>:删除指定的套件;
-f<文件>+:查询拥有指定文件的套件;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--install<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合"-l"参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。
#安装
rpm -ivh your-package # 直接安装
rpmrpm --force -ivh your-package.rpm # 忽略报错,强制安装
#卸载
rpm -ql tree # 查询
rpm -e tree # 卸载
rpm -ql tree # 查询
#列出所有安装过的包
rpm -qa
#如何获得某个软件包的文件全名
rpm -q tree
#rpm包中的文件安装的位置
rpm -ql tree # rpm -ql 包名
#哪个软件包包含这个程序
rpm -qf `which 程序名` #返回软件包的全名
rpm -qif `which 程序名` #返回软件包的有关信息
rpm -qlf `which 程序名` #返回软件包的文件列表[root@localhost ~]# rpm -qf `which sshd`
yum install -y lrzsz
#Xshell rz命令
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
#安装gcc等文件
./configure --user=www --group=www --prefix=/usr/local/nginx
make 编译
make install 安装
systemctl shop httpd 关闭httpd
history 查看输入的指令
systemctl stop firewalld 关闭防火墙
(11条消息) linux 源码编译 ./configure 的配置和用法_mayue_csdn的博客-CSDN博客_./configure
第十章 计划任务
cat /etc/redhat-release 查看版本
uname -a 内核
at 单次执行任务
atq 查看任务
Linux at命令详解(cnblogs.com)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZdkINuvL-1655050253298)(C:\Users\yue’yue\AppData\Roaming\Typora\typora-user-images\image-20220417192937048.png)]
crontab 循环执行
systemctl
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
第十一章 日志管理
ps aux | grep rsyslogd
/var/log 日志文件夹
tailf /var/log/messages 系统主日志文件
tailf /var/log/secure 认证、安全
tailf /var/log/yum.log yum
tailf /var/log/maillog 邮箱
tailf /var/log/cron 任务计划
tailf /var/log/dmesg 系统启动
vim /etc/rsyslig.conf 主配置文件
1.修改ssh程序的设备类型
vim /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV
替换为:SyslogFacility LOCAL5
2.修改rsyslog程序的规则
vim /etc/rsyslog.conf
local5.* /var/log/name
3.重启rstslog程序和ssh程序
systemctl restart rsyslog.service sshd
4.观察新日志
ll /var/log/secure var/log/name
#日志轮转
配置文件
配置主文件/etc/logrotate.conf
子文件夹/etc/logrotate.d/*
Linux日志轮替(日志转储)及logrotate配置文件分析 (biancheng.net)
第十二章 网络
查询网卡信息
ip a
ifconfig
配置网络工具:
命令行配置nmcli
图形配置:nmtui/nm-connection-editor
第十三章 网络管理实战
第十六章 文件服务器
#服务器端
yum install -y vsftpd #安装vsftpd
touch /var/ftp/abc.txt #准备要发的文件
systemctl start vsftpd #启动
systemctl status vsftpd #查看状态
systemctl enable vsftpd #开机启动
systemctl restart vsftpd #重启
ss -tnl #查看端口号
或 netstat -anpt
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld #开机关闭
setenforce 0 #关闭SELinux
vim /etc/selinux/config
SELINUX=disabled #永久关闭
vim /etc/vsftpd/vsftpd.conf #配置文件夹
anonymous_enable=YES#是否允许匿名用户登录ftp
普通用户访问为/home
anon_upload_enable=YES#启动上传文件的能力
anon_mkdir_write_enable=YES#启动创建目录的能力
systemctl restart vsftpd #重启
创建一个可写文件夹即可
put 2.txt #创建文件
mkdir 222 #创建文件
mirror -R aaa #上传目录
[ linux系统FTP服务端修改主被动模式](https://blog.csdn.net/weixin_43759606/article/details/113582776#:~:text=在FTP被动模式 (passive mod)下,数据连接是由客户程序发起的,和主动模式相反。 被动模式要求,FTP Server,的防火墙开放 21 和 一个范围内的端口;主动模式就是 client 端开放一个随机端口,Server端主动去连接。)
#用户端
yum -y install lftp #安装客户端工具
lftp 服务端IP
#查看下载
ls
get abc.txt #下载文件
mirror pub #下载目录
wget ftp://192.168.140.129/abc.txt #快速下载
NFS Server
ssh免密登录
#生成密钥
ssh-keyen (三次回车)
#传递密钥
ssh-copy-id 192.168.140.132 (输入132的密码)
- ssh加固
第十七章 网站服务
[root@localhost ~]# yum -y install httpd
安装
[root@localhost ~]# systemctl start httpd
启动
[root@localhost ~]# systemctl status httpd
查看服务状态
[root@localhost ~]# systemctl enable httpd
开机自启
[root@localhost ~]# systemctl stop firewalld
关闭防火墙
[root@localhost ~]# setenforce 0
关闭selinux
[root@localhost ~]# systemctl stop firewalld
关闭防火墙
[root@localhost ~]# httpd -v
查看版本
Server version: Apache/2.4.6 (CentOS)
输出信息
2.创建a.org的网站配置文件
# vim /etc/httpd/conf.d/a.org.conf
<VirtualHost *:80>
某个虚拟主机
ServerName www.a.org
服务器起个名字
DocumentRoot /var/www/html/a.org
注释:网站的根目录
</VirtualHost>
httpd -t 检查配置文件错误信息
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
log global
maxconn 4000
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout check 10s
listen stats
bind 192.168.140.139:9000
mode http
stats enable
stats uri /stats
stats auth admin:admin
stats admin if TRUE
listen mariadb
balance roundrobin
mode tcp
option tcplog
option tcpka
bind 192.168.140.139:3307
server node1 192.168.140.132:3306 check weight 1
server node2 192.168.140.138:3306 check weight 1
server node3 192.168.140.139:3306 check weight 1
192.168.140.132 node1
192.168.140.138 node2
192.168.140.139 node3