Linux学习
常用命令:
命令中的空格很重要!ctrl +l清屏,tab自动补全
-
pwd 查看当前路径
-
ls 显示当前目录下的所有文件夹和文件 ls / 绝对路径 显示根目录下的文件
-
ls -a 可显示隐藏文件
-
ll(ls -l)的简写 显示当前目录下的所有文件和文件夹的具体信息
-
cd 切换路径 如 cd / 表示回到根目录 cd …回到上级目录
-
touch 创建文件 如touch demo 表示在当前目录下创建demo文件;可加绝对路径创建 如touch /aaa/b1 表示在根目录下aaa目录中创建b1文件
-
mkdir 创建目录 如mkdir aaa 表示在当前目录下创建aaa目录;可加绝对路径创建 如mkdir /aaa/b2 表示在根目录下aaa目录中创建b2目录
-
mkdir -p 递归创建,可连续创建目录 如mkdir -p /a1/b1/c1 表示在根路径下连续创建a1目录,a1目录下再创b1目录,在创c1目录
-
cp 源文件路径 目标文件夹 表示复制文件 如cp /a1/b1/c1/d1 /a1 表示将/a1/b1/c1下的d1文件复制到/a1目录下
-
cp -r 源文件夹 目标文件夹 表示把源文件夹下的所有东西拷贝到目标文件夹 如 cp /a1/b1 /home 表示将b1文件夹下的所有 包括b1拷贝到/home文件夹下
-
mv 源文件路径 目标文件夹 移动文件 用法与cp相似,如 mv /a1/b1/c1/d1 /a1 表示将/a1/b1/c1下的d1文件移动到/a1目录下;mv还能更改文件名 如 mv /a1/b1/c1/d1 /a1/d2 表示将/a1/b1/c1下的d1文件移动到/a1目录下并改名为d2;mv /a1/d2 /a1/d3表示将/a1目录下的d2文件名更改为d3
-
cat 文档路径 表示查看文档内容 如cat /aaa/a.txt 表示查看根目录下aaa目录中的a.txt文件
-
vim 文档路径 表示编辑文档 如vim /aaa/a.txt 进入根目录下aaa目录中的a.txt文件,按i键进入编辑文本模式,
yy键复制光标指向的一行,p键粘贴,可多行复制,如3yy;
dd删除光标所在的一行,可多行删除,如3dd;u撤销;
hjkl:光标左下上右移动
0、$:光标移动过到本行的行首行尾
G:光标移动到文本最后一行
gg:光标移动到文本第一行
3g:光标移动到文本第三行
编辑完后按esc键进入命令模式,:wq命令退出并保存! :q 退出不保存
/str (n:下翻;N:上翻):查找字符 如/qqq:查找qqq字符
-
cat/proc/cpuinfo 查看cpu信息
-
cat/proc/meminfo 查看内存信息
Linux目录:
- bin 二进制目录,存放普通用户使用的命令
- sbin (super bin)管理员使用的命令
- dev 设备文件
- root root用户的Home
- home 存放普通用户的家目录
- tem 存放临时文件
- dev 硬件驱动
- etc 配置文件
- run 缓存
- boot 存放系统启动内核
文件类型
- -开头的为普通文件,包括图片,文本文件…
- d开头的为文件夹
用户组信息存储的文件
-
用户基本信息文件:/etc/passwd
- root:x:0:0:root:/root:/bin/bash 7列以:分隔
- root表示用户,X为用户密码,0为UID(用户ID),0为GID(组id),root描述,/root为root用户的家目录,/bin/bash为shell
- root:x:0:0:root:/root:/bin/bash 7列以:分隔
-
用户密码信息文件:/etc/shadow
用户
- useradd user01:新建用户 user01 ,新建用户的时候默认添加基本组
- id user01 查询用户命令
- passwd user01:更改user01密码
- userdel -r user01:删除用户,-r表示删除用户的时候把用户/home/user01目录一起删除
- usermod -s : 修改用户属性 如:usermod -s /sbin/nologin user01 表示禁用user01用户
- groupadd ccc :新建ccc组,这个组和其他用户无关,只有将用户拉入这个组后这个组才有用户
- usermod user01 -g ccc:修改user01用户的基本组,现在user01的基本组为ccc那个组
- usermod user02 -G ccc:将user02用户加入到ccc那个组,ccc为user02的附加组,user02的基本组不变
- gpasswd -d user02 ccc:将user02用户从ccc组里删除
用户提权和文件权限(r4w2x1)
- su - root :普通用户切换root用户(永久提权) su -user01:切换为user01用户
- 为user01提权:(临时提权)
- 先在root账户中为user01提权–>usermod user01 -G wheel 即将user01用户扔到wheel组里
- 然后登录user01账户,使用sudo命令即可,如:sudo useradd user02
- -rw-r–r–. 1 root root 0 11月 17 09:47 file01
- -表示文件;rw- 文件属主(u)权限为读(r)写(w)-表示没有执行(x)权限;r–文件属组(g)权限为只读;r–其他用户(o)权限为只读;1表示链接数;root为主用户;root组;0表示文件大小;11月 17 09:47最后一次修改文件日期;file01为文件名
- chmod a=rwx /tem/file01.txt 给a(ugo)flie01文件的读写执行权
- chmod 777 /tem/file01.txt给a(ugo)flie01文件的读写执行权 a表示所有,u表示主用户,g表示组,o表示其他用户 rwx对应421
- chmod 000 /tem/file01.txt 所有用户都没权限
- chown user01 /tem/file01.txt 表示把file01的属主用户改为user01
- chown .hr /tem/file01.txt 表示把file01的组改为hr
- acl(access control lis)限制用户对文件得访问,acl是对ugo的补充
- setfacl -m u:user01:rw /home/file01 设置文件访问控制 -设置 对象:对象名:权限(rwx) 文件路径
- setfacl -m g:hr:rwx /home/file01 设置文件访问控制 -设置 组:组名:权限(rwx) 文件路径
- getfacl /home/file01 查看file01文件的权限
- watch -n1 ‘ll /home/file01.txt’ 可以每隔1s查看file01.txt文件的权限状态 需要新开一个窗口
- chattr +i /home/file100.txt 给file100加上这个权限后所有用户都不能对file100进行操做 ;chattr -i /home/file100.txt 取消这个权限
- 目录默认权限为755;文件默认权限为644
进程管理
磁盘管理
-
磁盘分区
fdisk /dev/sdb #输入n为磁盘分区/输入d为删除磁盘分区 #输入p为主分区/输入e为扩展分区 #回车,指定分区大小回车 #继续按n创建第二个分区.... #创建完后按p查看分区,w保存退出
partprobe /dev/sdb #@创建完后刷新分区 ls /dev/sdb* #查看sdb磁盘分区 init 6 #重启计算机 reboot #重启计算机 lsblk #查看磁盘信息
-
磁盘格式化
mkfs.ext4 /dev/sdb1 #格式化磁盘分区
-
磁盘挂载
#首先在/目录下创建一个目录,如mkdir /mount/disk1 mount /dev/sdb1 /mount/disk1/ #将sdb1分区挂载到/mount/disk1/目录下 df -h #查看磁盘信息 umount /dev/sdb #卸载sdb磁盘,卸载后磁盘里面的数据不会丢失,相当于拔出u盘
-
逻辑卷
pvcreate /dev/sdc #创建物理卷 vgcreate vg1 /dev/sdc #创建卷组vg1 lvcreate -L 4g -n lv1 vg1 #创建逻辑卷 -L 4g为逻辑卷的大小,-n lv1为逻辑卷的名字为lv1 mkfs.ext4 /dev/vg1/lv1 #格式化逻辑卷 这里跟卷组名/逻辑卷名 mount /dev/vg1/lv1 /mount/lv1 #挂载逻辑卷
pvs #物理卷状态查询 vgs #卷组状态查询
#逻辑卷扩容 pvcreate /dev/sdd #创建物理卷 vgextend vg1 /dev/sdd #将创建好的pv添加到vg1卷组(扩容) lvextend -L +4g /dev/vg1/lv1 #将逻辑卷lv1扩容4g resize2fs /dev/vg1/lv1 #相当于刷新逻辑卷lv1
#逻辑卷扩容 pvcreate /dev/sdd #创建物理卷 vgextend vg1 /dev/sdd #将创建好的pv添加到vg1卷组(扩容) lvextend -L +4g /dev/vg1/lv1 #将逻辑卷lv1扩容4g resize2fs /dev/vg1/lv1 #相当于刷新逻辑卷lv1
文件压缩与解压
-
压缩
#语法: tar 选项 压缩包名称 源文件 tar -cf etc.tar /etc #将etc目录打包,-cf:create file tar -czf etc.tar.gz /etc #打成gzip包,这个包比tar包体积小 tar -cjf etc.tar.bz /etc #这个压缩后体积比gzip更小 bzip tar -cJf etc.tar.xz /etc #xzip
-
解压
#语法:tar -xf 压缩文件 tar -xf 111.tar #解压到当前目录 tar -xf 111.tar -C /root/111/tmp #解压到指定目录中
软件管理
-
yum核心配置目录
#将/etc/yum.repos.d/*打包移走 tar -cf yum.repos.tar * #将/etc/yum.repos.d/*打包 mv yum.repos.tar /tmp #将打包文件移动到/tmp目录中
#自定义yum核心配置文件 vi /etc/yum.repos.d/dvd.repo #文件后缀必须为.repo #baseurl=file:///mnt/cdrom表示本地源,系统安装光盘
-
挂载安装光盘
先要将光盘放服务器上通电
mkdir /mnt/cdrom #创建cdrom目录 mount /dev/cdrom /mnt/cdrom/ #将光盘挂载到/mnt/cdrom/目录下 ls /mnt/cdrom/ #能查看到光盘信息即可 ls /mnt/cdrom/Packages/ |wc -l #查看目录下总共有多少个文件
可以将mount /dev/cdrom /mnt/cdrom/ 命令写到/root/.bashrc目录里面,这样开机就能直接将将光盘挂载 到/mnt/cdrom/目录下,就不用每次重启后还需要重新挂载
-
yum阿里源配置
rm -rf /etc/yum.repos.d/* #1.删除本地源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #2.配置阿里源 #每次更换完yum源后需完成3、4步 yum clean all #3.清除yum缓存 yum makecache #4.缓存软件包信息,提高搜索、安装软件包信息
yum repolist #查看yum源信息 yum provides vim #查看vim属于哪个软件,这个命令很重要 yum remove vim #卸载vim
-
软件安装
#全新安装 yum -y install httpd vsftpd #yum:主命令;-y:自动确认;install:安装;httpd:软件包1;vsftpd: 软件包2... #重新安装 yum -y reinstall httpd #reinstall重新安装 yum list httpd #查看包(httpd)是否安装 带@表示已安装
-
源码包安装
#以tengine源码包为例 #1.在真机上下载tengine源码包 tengine-2.2.0.tar.gz #2.安装 lrzsz-0.12.20-36.el7.x86_64 yum install -y lrzsz-0.12.20-36.el7.x86_64 #3.将真机上的源码包上传到虚拟机 rz #4.安装源码包所需环境 yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel #5.解压tengine-2.2.0.tar.gz,并进入tengine-2.2.0/目录 tar -xvf tengine-2.2.0.tar.gz cd tengine-2.2.0/ #6.配置 ./configure --prefix=/user/local/nginx make make install #7.启动 /user/local/nginx/sbin/nginx
网络管理
-
网络配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes //是否启用,yes为启用,no为禁用
BOOTPROTO=dhcp //获取IP地址的方式,dhcp为自动,none为手动
改完配置文件后需要重启网络systemctl restart networkip a #查看所有ip ip route #查看路由,查看网关 ss -tnl #查看端口号
-
固定ip地址
#首先需要在虚拟机查看子网ip需要和设置的ip在同一网段 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static #这里改为static 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=1ec7cb5b-4708-4b48-ac77-c10fd6e23f5d DEVICE=ens33 ONBOOT=yes IPADDR=192.168.85.137 #这里是固定的ip地址 NETMASK=255.255.255.0 GATEWAY=192.168.85.1 # 设置默认网关为你的路由器地址 查看默认网关地址 ip route | grep default DNS1=8.8.8.8 # 设置第一个DNS服务器地址 查看DNS服务器地址:cat /etc/resolv.conf DNS2=8.8.4.4 # 设置第二个DNS服务器地址
-
更改主机名
vi /etc/hostname #主机名文件
-
关闭防火墙
systemctl stop firewalld #关闭防火墙(重启后不生效) systemctl disable firewalld #关闭防火墙,重启后也保持关闭状态 systemctl status firewalld #查看防火墙状态 setenforce 0 #临时关闭selinux vi /etc/sysconfig/selinux #SELINUX=disabled 永久关闭selinux
firewall-cmd --zone=public --add-port=3306/tcp --permanent #给防火墙给指定端口放行 systemctl restart firewalld.service #重启防火墙 firewall-cmd --reload #重新加载防火墙
#安装常用工具 yum install -y lrzsz sysstat elinks wget net-tools bash-completion
文件服务
-
nfs
1.在服务器1上安装,配置nfs服务器(192.168.197.129)#首先需要关闭防火墙,开启网络 yum install -y nfs-utils #安装nfs工具 mkdir /webdata #创建webdata目录 echo "nfstest" > /webdata/index.html #编写测试网页文件 vi /etc/exports #编写nfs配置文件 文件类容 /webdata 192.168.197.0/24(rw) #/webdata为发布资源的目录;192.168.197.0/24指允许访问nfs的客户机;(rw)可读可写 systemctl start nfs-server #启动nfs服务 systemctl enable nfs-server # 开机自启 exportfs -v #查看暴露出去的目录,检查nfs输出是否正常
2.在客户机1上安装httpd,nfs客户端(192.168.197.128)
yum install -y httpd nfs-utils systemctl start httpd #启动网站服务,可在客户机2中访问测试 showmount -e 192.168.197.129 #查询nfs服务器可用目录 mount -t nfs 192.168.197.129:/webdata /var/www/html #将nfs服务器挂载到/var/www/html中
3.客户机2(192.168.197.130)
yum install -y elinks #安装elinks elinks http://192.168.197.128 #访问128服务器
-
ssh
#语法: ssh 主机名@ip地址 ssh root@192.168.197.128 #远程连接主机
firewall防火墙
1、查看firewall服务状态
systemctl status firewalld
出现Active: active (running)切高亮显示则表示是启动状态。
出现Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态
firewall-cmd --state
3、开启、重启、关闭、firewalld.service服务
开启
service firewalld start
重启
service firewalld restart
关闭
service firewalld stop
4、查看防火墙规则
firewall-cmd --list-all
5、查询、开放、关闭端口
查询端口是否开放
firewall-cmd --query-port=8080/tcp
开放80端口
firewall-cmd --permanent --add-port=80/tcp
移除端口
firewall-cmd --permanent --remove-port=8080/tcp
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload