Linux命令提示符a
创建用户:useradd 用户名
删除用户:userdel -r 用户名
userdel 用户名 对比-r只能删除用户无法删除用户的目录和邮箱
切换用户:su - 用户名 切换用户并且进入用户的家目录
su 用户名 切换用户并且进入到当前的工作目录
查看用户属性:id 用户名
查看路径:pwd 查看当前所在路径
创建密码:passwd 用户名 更改用户密码且必须在root下才可以更改用户密码
登出:exit 如果想回到管理员账户可以使用su root。但是回到root时无法删除刚刚登录过的账户,会显示正在被占用。如果想要删除必须exit一步步登出返回管理员账户。
查看时间:date date +%F #只显示当前年月日 date +%X #只显示当前时间到秒
查看当前目录下文件:
ls ls /root/a.tx 单独列出文件
ls /home 查看指定目录下的文件
ls -l 长格式显示(显示文件的详细信息)
- rw- --- --- . 1 root root 1241 3月 28 15:05 anaconda-ks.cfg
文件类型\权限 硬链接个数 所有者 所属组 大小 修改时间 名字
[root@localhost ~]# ll -d /home/ #显示目录的详细信息
#ls -lh //-h 人性化显示 (显示文件大小)
#ls -a //all 显示所有文件 (包括隐藏文件)
案例:ls a.txt b.txt c.txt .开头的文件为隐藏文件
创建文件:touch 文件名
删除文件:rm -rf 文件名
关机:init 0 poweroff
重启:reboot、init 6
linux命令行前缀含义:
前缀含义图1
linux文件类型:
文件类型图2
Linux命令提示符2
删除文件:rm -rf f 表示强制 r 表示递归
通配符 * :表示匹配任意长度的任意字符
当ls 后面的文件路径是目录时, ls命令默认是打开该目录,查看目录内的文件属性。
当ls 后面的文件路径是普通文件时, ls命令默认是显示该文件的属性。
' * ' 不匹配隐藏文件
查看别名:type -a
# type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls Linux中一切皆文件
设置别名:alias 别名='命令'
[root@localhost ~]# alias ddd='df -Th'
[root@localhost ~]# alias alias ddd alias ddd='df -Th'
取消别名:unalias -a ddd
Linux中的目录功能:
/root :root用户的家目录
/home :存储普通用户家目录
lost+found :这个目录平时是空的,存储系统非正常关机而留下“无家可归”的文件
/usr :系统文件,相当于C:\Windows
/usr/local :软件安装的目录,相当于C:\Program
/usr/bin :普通用户使用的应用程序
/usr/sbin:管理员使用的应用程序
/usr/lib :库文件Glibc 32bit
/usr/lib64 :库文件Glibc 64bit
/boot :存放的系统启动相关的文件,例如kernel
/etc :配置文件(系统相关如网络/etc/sysconfig/network)
/tmp :临时文件(系统:程序产生的临时文件)
/opt :空目录
/var :存放的是一些变化文件,比如数据库,日志,邮件....
/proc :虚拟文件系统,系统程序文件所处目录 。虚拟文件系统:只要关机就会没有。
==设备(主要指存储设备)挂载目录==
/mnt #系统提供这个目录是让用户临时挂载其他的文件系统
绝对路径和相对路径:
首先linux路径由"/"和目录(文件)名称两部分组成
绝对路径:从根开始的路径是绝对路径。案例:/home/alice/file1 /etc/grub.conf
相对路径:凡是非根开始的路径 比如:etc var/ftp/pub ./test.sh
切换目录: ' . ' 表示当前目录
cd .. 回到上一级目录等同于相对路径
cd 或 cd ~ 直接回到家目录
cd /home/abc 切换目录=绝对路径
cd - 回到原来的目录 多次使用等于在两个目录间来回跳转
创建文件:touch a.txt
touch /home/file10.txt
touch /home/{zhuzhu,gougou} // {} 同时创建多个文件
touch /home/file{1..20} // 批量创建
echo 编辑的内容 > 文件名 >是覆盖重定向 #把之前的内容替换掉
echo 编辑的内容 >> 文件名 >>是追加重定向 #保留之前的内容,在后面添加新内容
当使用echo 123 >> a.txt 这个命令的时候在文件不存在的时候会创建该文件并将内容追加到改文件中
创建目录 : mkdir dir1
创建两个目录:
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7} #-v :verbose 冗长的。显示创建时的详细信息
mkdir -p /home/dir8/111/222 #-p 创建连级目录,一级一级的创建
快捷键
Ctrl + a :移到命令行首
Ctrl + e :移到命令行尾
Ctrl + u :从光标处删除至命令行首
Ctrl + k :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首
Ctrl + d :删除光标处的字符
Ctrl + h :删除光标前的字符
重新执行命令:
Ctrl + p:历史中的上一条命令
ESC + . :打印之前执行过的命令的最后一部分 以空格为分隔符
控制命令:
Ctrl + l:清屏
Ctrl + c:终止命令
Tab键: 自动补全
复制:cp
mkdir /home/dir{1,2} #创建目录
cp -v anaconda-ks.cfg /home/dir1/ #-v 显示详细信息
cp anaconda-ks.cfg /home/dir1/test.txt #复制并改文件名
cp -r /etc /home/dir1 #-r 拷贝目录使用,连同目录里面的文件一块拷贝
语法:cp -r 源文件1 源文件2 源文件N 目标目录 #将多个文件拷贝到同一个目录
多文件复制时,语法中(命令中)最后一个地址是目标地址,中间出现的所有文件都是原文件地址
cp -r /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hosts .
cp -r /etc /tmp
移动:mv /root/1.txt /root/haha
[root@localhost ~]# ls
anaconda-ks.cfg haha
多文件复制/转移:
cp -r /root/D-{1..3} /opt/T-{1..3} 产生的结果是将D-1,D-2,D-3 T-1,T-2都复制到T-3目录中。
查看文件内容:
cat : 查看一个文件的全部内容
cat -n 显示行号 cat -A 显示包括控制字符(换行符/制表符)
head : 默认查看前十行
head -2 默认查看前两行
tail : 默认查看文件的后十行
tail -1 默认查看文件的最后一行
grep :针对文件内容进行过滤
过滤文件中带有root的内容:
grep 'root' /etc/passwd
过滤以root开头的行:^ --以什么开头
grep '^root' /etc/passwd
grep 'bash$' /etc/passwd
less : 分页显示
less /etc/makedumpfile.conf.sample
1.空格键是翻页 回车键是翻行
2.上下箭头可以来回翻
3. / 关键字 #搜索 (n按关键字往下翻 N按关键字往上翻)
4.快捷键:q -quit 退出
/onh 取消搜索光标
文件编辑器
vi / vim 文件名
i #在光标所在处进入编辑模式
a #在当前光标后面进入编辑模式
A #在行尾进入编辑模式
o #在光标的下一行进入编辑模式
O #在光标的上一行进入编辑模式
从编辑模式进入命令模式:Esc
命令模式:
光标定位键盘:
0 $ #行首行尾
gg #页首--文本顶端
G #页尾--文本底部
3G #进入第三行
/string #查找字符,n下一个,N上一个 (n N 可以循环的)
set nu #显示行号
文本编辑:
yy #复制
3yy #从光标开始复制3行。在最后粘贴
ygg #从当前光标复制到页首
yG #从光标开始复制到页尾
dd #删除一行
3dd #从光标开始删除3行
dgg #从光标开始删除到页首
dG #从光标开始删除到页尾
d^ #删除当前光标之前的内容
p #粘贴到本行的下一行
P #粘贴到本行的上一行
x #删除光标所在的字符
D/d$ #从光标处删除到行尾
u #undo撤销
r #可以用来修改一个字符
vim中的查找和替换
:s/world/nice/ 替换光标所在行,将所在行的world替换为nice
:3s/world/nice 替换指定行,将指定行的world替换为nice
:1,5 s/nologin/soso/ 将1-5行的nologin 替换为soso
:%s/bin/soso/ 替换所有行
:%s/sbin/nice/g 替换行内所有关键字 注释:%表示替换所有行 g表示行内所有关键字
:w /tmp/aaa.txt 另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt 从1-3行的内容另存为/tmp/2.txt
stat : 详细查看文件
[root@localhost home]# stat QF.txt
文件:"QF.txt"
大小:203 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33579681 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:home_root_t:s0
最近访问:2023-04-03 19:38:30.489039501 +0800
最近更改:2023-04-03 19:38:30.489039501 +0800
最近改动:2023-04-03 19:38:30.489039501 +0800
创建时间:-
groupadd hr : 创建一个用户组hr
groupadd hr -g 2000 :创建组叫hr,并指定gid为2000
grep 'hr' /etc/group : 查看/etc/group组中的hr信息
groupmod 参数 组名
-g:修改组的gid
-n:修改组名
groupmod -g 2000 grp1
groupmod -n 新组名 grp1
groupdel net01 删除组net01
查看组:cat /etc/group
组名 : 代表组密码 : gid : 组员
id user:查看用户的uid、gid、和所在组
uid=1001(user01) gid=1003(user01) groups=1003(user01)
主属组 附属组
uid 系统用来识别账户的user identify
gid 系统用来识别组的group identify
whoami 查看我现在所使用的账户
创建用户并指定选项
useradd user02 -u 503 //指定uid为503
useradd user05 -s /sbin/nologin //创建用户并指定shell
useradd user07 -G it,fd //创建用户,指定附加组
useradd -g 1003 user8 #指定用户的主属组为1003组。
useradd user10 -u 4000 -s /sbin/nologin
修改用户名:-l
usermod -l newname user8
修改GID: -g
usermod user10 -g new_gid gid需要提前存在
修改UID -u
usermod -u new_id jack
id jack
uid=1005(jack) gid=1004(jack) groups=1004(jack)
修改用户的登录shell -s
usermod -s /sbin/nologin user07 修改用户的登录shell
组成员管理
给组添加账户 -a
gpasswd -a user10 grp2
同时添加多个用户到组 -M members成员的缩写
gpasswd -M tom,alice it
从组删除用户 -d
gpasswd -d user07 hr
文件权限管理1
属主权限 U
所属组权限 G r读 w写 x执行
其他人权限 O
chown 改变文件或目录的所属主以及所属组
chown alice.hr file1.txt //修改属主、属组
chown tom file1.txt //修改属主
chown .it file1.txt //只改属组
chown -R alice.hr dir1 //递归修改---针对目录
chmod 为文件或目录设置访问权限
chmod使用方法 图1
chmod u+x file1.txt 属主增加执行
chmod a=rwx file1.txt 所有人等于读写执行
chmod a=- file1.txt 所有人都没有权限
chmod ug=rw,o=r file1.txt 属主属组等于读写,其他人只读
使用数字 :r-4 w-2 x-1
chmod 644 file1.txt
rwx对文件的影响
1.当用户要执行一个文件时,不仅需要执行权限,还需要该文件的读取权限
vim /home/file1
date //编写一个文件内容
ll /home/file1
-rw-r--r--. 1 root root 5 Nov 3 15:19 /home/file1 //查看文件权限
su - alice //切换普通用户
[alice@linux-server ~]$ cat /home/file1
date //查看刚刚编写的文件内容
[alice@linux-server ~]$ /home/file1 //执行文件
-bash: /home/file1: Permission denied //提示权限不够
[alice@linux-server ~]$ exit
logout //登出
[root@linux-server ~]# chmod o+x /home/file1 //给文件授予执行权限
[alice@linux-server ~]$ /home/file1 //执行文件
Sun Nov 3 15:26:21 CST 2019
[root@linux-server ~]# chmod o+w /home/file1 //给文件授予写权限
[alice@linux-server ~]$ vim /home/file1
date
123
rwx对目录的影响
2.如果用户只有目录的写权限,仍然无法在该目录创建文件。因为写权限需要有X(执行)权限的支持。
3.当一个用户即是属主,又在组里的时候,默认使用属主权限
一个用户要删除A目录下的B文件时,需要关注的是该用户对A目录是否有写与执行权限
例1:对目录没有w,对文件有rwx
mkdir /dir10
touch /dir10/file1
chmod 777 /dir10/file1
ll -d /dir10/
drwxr-xr-x. 2 root root 19 Nov 3 15:37 /dir10/ //查看dir10文件的权限
ll /dir10/file1
-rwxrwxrwx. 1 root root 0 Nov 3 15:37 /dir10/file1 //查看dir10下的file1文件的权限
su - alice // 登录一个普通用户
[alice@linux-server ~]$ cat /dir10/file1
jack
[alice@linux-server ~]$ rm -rf /dir10/file1 //因为普通用户对dir10没有写权限,所以删除dir10目录下的文件时会提示权限不够
[alice@linux-server ~]$ touch /dir10/file2 //创建dir10目录下的文件时与删除同理,会提示权限不够。
例2:对目录有w,对文件没有任何权限
chmod 777 /dir10/ //修改dir10为满权限
chmod 000 /dir10/file1 //修改dir10目录下的flie1文件的权限为无权限ll -d /dir10/
ll -d /dir10/
drwxrwxrwx. 2 root root 19 Nov 3 15:38 /dir10/
[root@linux-server ~]# ll /dir10/file1
----------. 1 root root 5 Nov 3 15:38 /dir10/file1
su - alice //切换到普通用户
cat /dir10/file1
cat: /dir10/file1: Permission denied //因为对文件没有任何权限,所以无法查看文件
[alice@linux-server ~]$ rm -rf /dir10/file1 //因为对目录dir10有满权限,所以可以在目录下删除或创造新文件。
[alice@linux-server ~]$ touch /dir10/file2
高级权限:suid、sgid、sticky
suid 4 提权 (只对二进制文件命令生效,其他不管用)
sgid 2 组继承 (只能对目录设置)
sticky 1 T权限 (权限控制 )
suid 普通用户通过suid提权 <针对文件>
在进程文件中(二进制、可执行的命令文件)上增加suid权限
chmod u+s /bin/cat //给cat命令suid提权
chmod u+s /bin/rm //给rm命令suid提权
使用suid提权之后,所有用户使用该命令都等同于root用户使用该命令
取消提权: chmod u-s /bin/rm
sgid SGID主要用在目录上-----如果用户在此目录下具有w权限的话,使用者在此目录下建立新文件,则创建的这个文件的群组与此目录的群组相同
mkdir /opt/dir1 #创建目录
groupadd hr #创建一个组
chmod 775 /opt/dir1/ #设置权限
ll -d /opt/dir1/
drwxrwxr-x. 2 root root 6 Nov 6 21:26 /opt/dir1/
chown .hr /opt/dir1/ #设置属组
chmod g+s /opt/dir1/ #设置sgid
ll -d /opt/dir1/
drwxrwsr-x. 2 root hr 6 Nov 6 21:26 /opt/dir1/
touch /opt/dir1/a.txt
ll /opt/dir1/a.txt
-rw-r--r--. 1 root hr 0 Nov 6 21:33 /opt/dir1/a.txt
chmod o+w /opt/dir1/ -R
su - alice
Last login: Wed Nov 6 21:34:59 CST 2019 on pts/2
[alice@linux-server ~]$ touch /opt/dir1/b.txt
[alice@linux-server ~]$ ll /opt/dir1/b.txt
-rw-rw-r--. 1 alice hr 0 Nov 6 21:35 /opt/dir1/b.txt
Sticky Bit T权限 针对others来设置 目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
cd /home/
mkdir dir2
chmod 757 dir2/
chmod o+t dir2/
ll -d dir2/
drwxr-xrwt. 2 root root 52 Oct 31 16:49 dir2/
useradd jack #创建用户
su - alice
Last login: Wed Nov 6 21:48:12 CST 2019 on pts/2
[alice@linux-server ~]$ touch /home/dir2/alice.txt #用户alice创建文件
[alice@linux-server ~]$ exit
logout
[root@linux-server home]# su - jack
Last login: Wed Nov 6 21:48:36 CST 2019 on pts/2
[jack@linux-server ~]$ touch /home/dir2/jack.txt #用户jack创建文件
[jack@linux-server ~]$ rm -rf /home/dir2/alice.txt
rm: cannot remove ‘/home/dir2/alice.txt’: Operation not permitted //测试jack删除alice创建的文件,无法删除,但是可以删除自己创建的文件
sudo 提权
[root@linux-server ~]# visudo #打开配置文件
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL //第一个ALL指示允许从任何终端、机器访问sudo。 第二个(ALL)指示sudo命令被允许以任何用户身份执行。第三个ALL表示所有命令都可以作为root执行
93 jack ALL=(ALL) NOPASSWD: ALL #添加内容
94 alice ALL=(ALL) NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch //放开个别命令使用权
95 ## Allows members of the 'sys' group to run networking, software,
测试
[root@linux-server ~]# su - jack
Last login: Wed Nov 6 22:04:46 CST 2019 on pts/2
[jack@linux-server ~]$ sudo mkdir /test1
[root@linux-server ~]# su - alice
Last login: Fri Jul 24 00:52:13 CST 2020 on pts/1
[alice@linux-server ~]$ touch /file
touch: cannot touch ‘/file’: Permission denied
[alice@linux-server ~]$ sudo touch /file
权限掩码
umask 查看掩码
0022 root账户的默认掩码
0002 普通用户的默认掩码
权限掩码的原理:权限掩码对初始权限进行覆盖,相同的覆盖掉;最高权限有的掩码没有的最终目录权限保留,最高权限没有的掩码有的最终目录权限仍然没有。
权限掩码原理 图1
隐藏权限:防止root误删
lsattr 查看文件的隐藏权限
chattr +a file1 //即Append Only,系统只允许在这个文件之后追加数据,不允许任何覆盖或截断这个文件;不允许修改,只允许追加。
chattr +i file2 //即Immutable,系统不允许对这个文件进行任何的修改;不能进行任何改变原文件的内容的操作。
chattr +A file3 // 即Atime,告诉系统不要修改对这个文件的最后访问时间
1.重定向
文件描述符:
& :表示正确错误混合输出
文件描述符 图2
案例:
输出重定向(覆盖) :date 1> date.txt //如果>前面什么都不加默认为1,标准正确输出。
输出重定向(追加) :date >> date.txt
错误输出重定向 :ls /home/ /aaaaaaaaa >list.txt
ls: cannot access /aaaaaaaaa: No such file or directory
ls /home/ /aaaaaaaaa >list.txt 2>error.txt //重定向到不同的位置
cat error.txt
ls: cannot access /aaaaaaaaa: No such file or directory //2>error.txt表示将标准错误输出信息,重定向到文件error.txt中,而不是直接输出到终端
混合输出重定向 :[root@localhost ~]# cat test.txt aaa.txt &> mix.txt
[root@localhost ~]# cat mix.txt
123
cat: aaa.txt: No such file or directory
通过输入重定向创建文件
(cat > file << EOF )是用来创建文件或者在脚本中使用,并向文件中输入信息输入的任何东西会被写入文件中,EOF命令结束。
语法:cat >> file5 << EOF #可以写到脚本或者文件里面
>
EOF:开始和结束的标记。
成对使用
结尾的另一个必须定格写。
管道 |
它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入.
用法:command1 | command2 |command3 |...
sort: 排序 :sort -t":" -k3 -n /etc/passwd #以: 分隔,将第三列按字数升序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd-r #以: 分隔,将第三列按字数降序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd |head #以: 分隔,将第三列按字数升序看前十行
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd |tail #以: 分隔,将第三列按字数升序看后十行
sort 排序,默认升序
-t 指定分隔符
-k 指定列
-n 按数值
awk命令:
awk '{print " "}' /etc/passwd //不输出passwd的内容,而是输出相同个数的空行,进一步解释了awk是一行一行处理文本
awk '{print "a"}' /etc/passwd //输出相同个数的a行,一行只有一个a字母
awk -F":" '{print $1}' /etc/passwd
awk -F: '{print $1; print $2}' /etc/passwd //将每一行的前二个字段,分行输出,进一步理解一行一行处理文本
awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd //输出字段1,3,6,以制表符作为分隔符
'NR==4{print $1}' 指定第四行
Xargs命令
xargs 可以读取标准输入和管道中的数据,用于弥补有些命令(如echo、kill、rm)不能从管道中读取数据的不足。
语法:
cat a.txt | xargs -i cp {} /目录
{}:前面传过来的内容
-i :为了让大括号生效
目录时 -r cp -rvf(连目录一起复制)
解释:前面传过来的东西交给大括号
cat file.txt | xargs ls -l
软件管理
rpm
缺点:有依赖关系,不能自动解决依赖关系。
举例:openssh-6.6.1p1-31.el7.x86_64.rpm
数字是版本号:第一位主版本号,第二位次版本号,带横杠的是修订号, el几---操作系统的版本。
rpm安装
rpm - ivh 软件包名称 //使用rpm安装软件包
-i : install -vh : verbose human -U : upgrade 升级
查找rpm包的网站:http://rpmfind.net/ http://pkgs.org
wget : 从网络中下载
http://mirror.centos.org/centos/7/os/x86_64/Packages/unzip-6.0-21.el7.x86_64.rpm
wget 下载地址 -O 指定存放路径
curl 下载地址 -o 另存为的文件路径
rpm -ivh 绝对路径 //本地安装rpm包
rpm -ivh 网络下载链接 //直接通过链接安装rpm包
查询:
-q : query(查询) -l : liust(列出) -f : file -a : all
rpm -qa | grep 软件名 //查找软件是否安装
rpm -ql httpd //列出某个软件包安装后,生成了哪些文件,以及文件对应的存储位置
rpm -qf /usr/share/httpd/noindex //查询该文件属于哪个包
rpm -qf /etc/passwd //查询某一个文件是哪个软件产生的:只能查询已经安装好的软件
卸载
rpm -e 软件名称
-e erase的意思
yum操作
清理yum缓存(元数据建立) :yum clean all
缓存软件包信息(提高搜索/安装软件的速度) : yum makecache
查看yum源信息 :yum repolist (常常与yum clean all 一起使用)
查看命令属于哪个软件 :yum provides rz
查看已经安装好的软件和没有安装好的软件(源里有就能查到):yum list
安装软件 : yum -y install 软件名称 // - y 跳过确认提示直接安装
重装:yum -y reinstall 软件名
卸载:yum erase 软件名 / yum remove 软件名
更换国外yum源为国内yum源
1.阿里yum源地址----http://mirrors.aliyun.com/repo/Centos-7.repo
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11WaK1yM 总网址
2.163yum源地址---- http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back #将原来的yum源备份到back文件夹
[root@localhost
yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo #下载aliyun的yum源
[root@localhost
yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo #安装扩展源----eple.repo
制作本地yum源方式
1.通过镜像制作本地yum源:
mkdir /mnt/centos7
#将本地镜像上传到虚拟机的/root目录中
挂载: mount 挂载设备 挂载点
mount CentOS-7-x86_64-DVD-1708.iso /mnt/centos7/
rm -rf /etc/yum.repos.d/* #删除原先的内容
cd /etc/yum.repos.d/ #yum源配置文件存放目录
vim CentOS.Base.repo #在编写yum配置文件是必须是.repo
[centos7]
name=centos7 #yum源描述 yum源名字
baseurl=file:///mnt/centos7 #指定本地yum源的路径
enable=1 #是否使用此yum源(1为打开,0为关闭)
gpgcheck=0 #检查软件
~
~
通过开启yum下载缓存功能制作自己的yum源
原理:通过在外网下载后不删除rpm包,后将所有的rpm包转到同一个目录下,最后将目录指定成仓库即可制作自己的yum源。
打开Yum缓存功能:安装完软件之后,软件不会被删除(默认安装完之后,不会保留安装包)
# vim /etc/yum.conf 修改下面参数的值为1,软件会被保存到cachedir指定的目录下
keepcache=1
yum install -y httpd
mkdir / yum_cache /创建目录用来存放rpm包
find /var/cache/yum/ -name "*.rpm" | xargs -i mv {} /yum_cache/ 将下载好的rpm包剪切至yum_cache
yum install -y createrepo #创建repo文件工具
[root@linux-server ~]# createrepo /yum_cache/ //此目录就可以作为yum源了。
[root@linux-server ~]# vim /etc/yum.repos.d/myyum.repo
[myyum]
name=myyum
baseurl=file:///yum_cache/
enabled=1 #表示启用这个源
gpgcheck=0 #表示对从这个源下载的rpm包不进行校验
yum repolist
注意:1.只有在外网下载才会产生rpm缓存包,本地下载不会产生缓存包。
2.第一次安装httpds时产生了5个缓存包,第二次重新安装httpd时只有一个缓存包,这是因为第一次安装时另外4个是主功能的依赖缓存包。
源码管理:
下载mysql源码包:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz
下载nginx源码包: wget http://nginx.org/download/nginx-1.16.1.tar.gz
解压缩nginx资源包: tar xzf nginx-1.16.1.tar.gz
#systemctl stop firewalld
# setenforce 0 #关闭防火墙和selinux
注:一般来说,所有的服务器都是需要关闭SeLinux的,因为服务器都是运行在公司内网环境中的,在内网环境中是不需要打开防火墙的,所以都是关闭Selinux和iptables的。如果打开这两个服务,那就需要在每次新开一个服务(比如Nginx、httpd、tomcat)的时候,都需要去这些规则上面开发对应的端口,几千台服务器还不把人烦死。所以无论是公司自己的服务器还是云服务器都是关闭这些安全服务的。
源码安装:./configure(相对路径执行安装) --user=www --group=www --prefix=/usr/local/nginx
1.指定安装路径:--prefix=/usr/local/nginx
2.检查安装环境,是否又编译器,是否满足软件依赖需求,最终生成Makefile
3.软件模块或者功能的启用禁用
#make(按makefile文件编译,产生可执行的文件,但是这个文件再当前目录中)
#make install (按makefile定义的文件路径安装,将产生的可执行文件,安装到合适的位置相当于拷贝)
1.[root@localhost ~]# ps aux //静态查看进程
ps : process 进程(进程是已启动的可执行程序的运行实例,是程序运行的过程, 动态的,有生命周期及运行状态)
a : 只能查看系统里面运行的所有终端进程
u :显示进程拥有者
x : 显示系统内所有进程
f :显示进程之间的父子关系
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128040 6672 ? Ss 13:3
9 0:01 /usr/lib/systemd/systemd --switched-root --syste
root 2 0.0 0.0 0 0 ? S 13:3
9 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 13:3
USER :进程运行的用户 PID :进程的ID %CPU :进程cpu的占用率
%MEN:进程内存的占用率VSZ (Virtual Memory Size):进程占有虚拟内存的大小RSS(Resident Set Size) :进程占用物理内存的大小STAT :进程状态
?:没用占用终端 R :运行 S :可中断睡眠(sleep,类似挂起)
D : 不可中断睡眠 (进程正在跟硬件交互) T :停止的进程 Z :僵尸进程(进程已经退出,但父进程还没有回收子进程占用的资源)
X :死掉的进程 START :进程的启动时间 TIME :进程占用CPU的总时间
COMMAND :进程文件,进程名
2.查看进程:[root@localhost ~]# ps -ef
-e : 显示所有进程 -l : 长格式显示 -f :完整格式
[root@localhost ~]# ps -ef
UID(用户ID) PID(进程ID) PPID(父进程ID) C(CPU占用率) STIME(开始时间) TTY(终端设备) TIME(此进程运行的总时间) CMD(命令名)
root 1 0 0 15:59 ? 00:00:01 /usr/lib/syst
root 2 0 0 15:59 ? 00:00:00 [kthreadd]
root 4 2 0 15:59 ? 00:00:00 [kworker/0:0H
查看单个PID:[root@localhost ~]# cat /var/run/httpd/httpd.pid
46520
查看指定PID:[root@localhost httpd]# ps aux | grep sshd
root 1028 0.0 0.4 112900 4312 ? Ss 15:59 0:00 /usr/sbin/sshd -D
查看端口:[root@localhost httpd]#lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 46520 root 4u IPv6 225153 0t0 TCP *:http (LISTEN)
查看网络进程和正在监听的端口:[root@localhost httpd]# netstat -tanlpu | grep "端口/进程名/PID"
-a: 显示全部的进程 -u: 显示udp-n :以数字的形式显示协议名称
-t : tcp-p:显示进程的名称和pid -l :只显示正在被监听的端口
进程状态:
Sl :以线程的方式运行 线程:线程是进程中的一条执行路径,也是CPU的基本调度单位。一个进程有一个或多个线程组成,彼此间完成不同的工作,同时执行,称为多线程
Ss : s进程的领导者,父进程、主进程
R+ :+表示是前台的进程组
S< :<表示优先级较高的进程
SN :NICE优先级比较低的进程
动态查看进程:
[root@localhost ~]# top # 动态显示信息,三秒刷新一次
top - 20:57:27 up 4:58, 3 users,load average: 0.00, 0.02, 0
三个参数分别代表过去 1 分钟、5 分钟、15 分钟的平均负载。如果三个参数值差距不大,表示系统负载平稳,当1分钟的值比5分钟或15分钟的值小很多,表示最近1分钟负载减少,反之表示最近1分钟负载增加。
PID USER PR NI VIRT RES SHR S %CPU %MEM
1 root 20 0 128168 6820 4188 S 0.0 0.7
2 root 20 0 0 0 0 S 0.0 0.0
4 root 0 -20 0 0 0 S 0.0 0.0
操作:h|?帮助 > 往下翻页 < 往上翻页 M 按内存排序 P 按cpu排序 q 退出
z 彩色显示 W 保存
PR:优先级 VIRT:进程使用的虚拟内存总量RES:进程使用的、未被换出的物理内存大小 SHR:共享内存大小 NI :nic值
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
进程控制:按pid杀死进程
kill , pkill 语法:kill 信号 PID;pkill 信号 进程名#信号也是进程空间通信的一种方式
[root@localhost ~]# kill -l #查看所有信号
-1 HUP 重新加载进程或者重新加载配置文件,PID不变
-9 KILL 强制杀死 -15 TERM 正常杀死(这个信号可以默认不写)
-18 CONT 激活进程 -19 STOP 挂起进程
作业控制:作业控制指的是控制正在运行的进程的行为。
[root@linux-server~]# sleep 7000 &#&:让命令或者程序后台运行
[1] 5441
[root@linux-server ~]# sleep 8000 #ctrl+z 把程序放到后台(这方法会让程序在后台暂停)
^Z
[2]+ Stopped sleep 8000
[root@linux-server ~]# jobs #查看后台的工作号
[1]- Running sleep 7000 &
[2]+ Stopped sleep 8000
[root@linux-server ~]# bg %2 #让暂停的程序在后台运行,%是用来修饰job number,2就是job number。(程序的工作号)
[2]+ sleep 8000 &
[root@linux-server ~]# jobs
[1]- Running sleep 7000 &
[2]+ Running sleep 8000 &
[root@linux-server ~]# fg %1#将后台的程序调到前台
sleep 7000
[root@linux-server ~]# jobs
[2]+ Running sleep 8000 &
[root@linux-server ~]# kill -9 %2 #通过kill杀死进程
[root@linux-server ~]# jobs
[2]+ Killed sleep 8000
[root@linux-server ~]# jobs #在次查看没有了
进程中的常用命令:
1.查看当前CPU负载
[root@yhphost ~]# uptime
09:56:40 up 15 min, 3 users, load average: 0.03, 0.07, 0.06
注:无选项uptime命令会显示一行信息,依次为:当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的1分钟、5分钟和15分钟内的平均负载。输出结果等同于top命令汇总区的第一行。
2.查看内存使用
[root@yhphost ~]# free -m -m:单位M
total used free shared buff/cache available
Mem: 972 204 472 7 295 624
Swap: 2047 0 2047
#echo 3 > /proc/sys/vm/drop_caches //临时清理内存
第一行:total1 : 物理,内存总量 used1 : 总计分配给缓存(包含buffer和cache)使用的数量,但其中可能部分缓存并未实际使用
free1 :未被分配的内存 shared1 : 共享内存,一般系统不会用到
buffers1 : 系统分配但未被使用cache数量
第二行:used2 : 实际使用的内存总量 free2: 系统当前实际可用内存
total :used1+free1 used1: used2+buffers1+cached1
free : free+buffers+cached1
total = used + free + buff/cache available = free + buff/cache(部分)
查看系统版本:cat /etc/redhat-release
查看正在运行的内核版本:uname -a
查看内核版本:uname -r
# yum install -y lrzsz
上传rz
下载 sz 文件
ssh远程管理服务
sshd服务的端口号:22
openssh-service 提供服务 openssh-clients 客户端
yum install -y openssh* 安装ssh服务(默认已经装好了)
服务器端启动服务:systemctl start sshd
关闭防火墙和selinux: systemctl stop firewalld setenforce 0
远程登录:
ssh root@192.168.182.130
root 用户默认不写为root,也可以使用其他用户
无密码登录(ssh密钥认证) //产生一对密钥:公钥+私钥
ssh-keygen #一直回车
cd /root/.ssh/ #查看钥匙目录
id_rsa (私钥) id_ras.pub(公钥) known_hosts(确认过公钥指纹的可信服务器列表的文件) authorized_keys(授权文件,传输过公钥到对方服务后自动重命名生成的)
ssh-copy-id 对方ip地址 //完成后远程链接时就不用输密码了
修改端口号:
systemctl stop firewalld
setenforce 0 //关闭防火墙
vim /etc/ssh/sshd_config //修改配置文件
#Port 22 //将第17行的注释去掉,自定义修改端口号
systemctl restart sshd
ssh root@192.168.182.130 -p 2222 //-p:port端口,指定端口
远程拷贝:
语法1:scp -r 本地文件 对方IP:文件存放路径
语法2:scp -r 对方IP:对方主机源文件位置 本地存放位置
谁是远程加谁的ip
远程拷贝目标改了端口 -P 拷贝目录 -r
服务器时间对时:ntpdate ntp.aliyun.com
yum install ntp
find命令:文件查找
1.按文件名查找:find /(路径) -name "fle2" //从指定目录查找文件
2.使用通配符查找:find /(路径) -iname(-i忽略大小写) “*.txt”
3.按文件大小查找:find /(路径) -size +3M -a(起到“并”的效果) -size -10M //查找目录下大于3M并且小于10M的文件
find /(路径) -size -3M -o(起到“或”的效果) -size +10M //查找目录下小于3M或者大于10M的文件
fine /(路径) -size -3M -a -name '*.txt" //查找目录下面小于3M并且名字是.txt的文件
4.按时间查找:find /(路径) -mtime +5 //修改时间5天之前 -mtime(modify改变时间) 内容修改时间会变
find /(路径) -atime +1 //访问时间1天之前 -atime(access访问时间)
find /(路径) -ctime +5 //修改时间5天之内 -change(change修改时间) 属性修改时间会改变
find /(路径) -amin +1 #访问时间在1分钟之前 find /(路径) -mmin -2 #修改时间在2分钟之内
5.按文件类型查找:find /(路径) -type f // f普通文件 d目录文件 l链接文件 b块设备文件
find /(路径) -type f -size -1M -o -name "*.txt"
6.按文件权限查找:find /(路径) -perm 644 //在当前目录精确查找644
find /(路径) -perm -4000 //包含suid
find /(路径) -perm -2000 //包含set gid
find /(路径) -perm -1000 //包含sticky
7.找到后如何处理:
-exec:find /etc -name "ifcfg*" -exec cp -rf {} /tmp \; //exec命令对之前查找出来的文件做进一步操作----- 查找带ifcfg开头的文件复制到tmp下 \逐个进行命令的操作 \改成+效果变追加
xargs:find /home/ -name "test*" | xargs -i rm -rf {} /tmp/ #找到之后删除处理xargs 参数传递
区别:-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。(整体操作)
缺点:1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
3、xargs不能操作文件名有空格的文件;
打包压缩:
工具:gzip和tar(打包) bzip2(只压缩) 结尾:.tar.gz .tar.bz2 .zip
打包:tar cvf dir.tar /home/a.txt //打包home目录下的a.txt,将包命名为dir.tar
解包:tar xvf dir.tar -C /opt //解包,将dir包解压到指定的/opt目录
压缩:bzip2 102-远程拷贝.mp4 //yum -y install bzip2 (bzip2需要安装)
gzip2 102-远程拷贝.mp4
解压缩:gzip -d 压缩文件
bzip -d 压缩文件
打包压缩一起:tar cvzf file.tar.gz 源文件 tar cvjf file.tar.bz2 源文件
注:z:表示gz压缩 j:表示bz2压缩
解压解包一起:tar xvzf 压缩文件 -C 指定解压路径 tar xvzf 压缩文件 -C 指定解压路径
注:z:代表的压缩
c:代表的是打包
x:代表的是解压
v:代表的是过程
f:代表的是指文件名
例:tar czf /tmp/`date +%F`-etc.tar.gz /etc/ //将/etc/打包放到tmp目录下,并以当前时间开头命名。
链接文件:
首先,每个文件都对应一个iNode号码,但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。inode号方便文件管理。
硬链接:
语法:ln 源文件 链接文件
ln /file2 /file22 //写入源文件的,在链接文件也会显示。删除源文件,链接文件依然可以查看。
注释:运行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。
反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。
软连接:
注释:文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的绝对路径。即文件A依赖于文件B存在。文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
语法:ln -s 源文件 链接文件
ln -s /file1 /file11 //写入源文件的,在链接文件也会显示。但是删除源文件,链接文件会显示出错。
软连接和硬链接的区别:软连接可以跨文件系统,硬链接不可以。
软连接可以对目录进行链接,硬链接不可以。
删除源文件后,软连接失效,硬链接无影响。
两种链接都可以通过命令ln创建。
ln默认创建的是硬链接,ln -s 创建的是软连接。
与传统硬盘相比,SSD固态电子盘的优点:
1.SSD不需要机械结构,完全半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。
2.SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性降到最小。
3.SSD因为没有机械部件及闪存芯片,所有没有任何噪音,功耗低。
4.质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。
5.SSD完全半导体化,无结构限制,可根据实际情况设计成各种不同的接口、形状的特殊电子硬盘。
磁盘分区:
MBR:对2TB以内的磁盘进行分区 分区工具:fdisk
1.主分区 2.扩展分区 3.逻辑分区
MBR最多支持14给分区:分区方案:1. 4个主分区(MBR最多支持4个主分区)
2. 3个或者3个以下的主分区,1个扩展分区,多个逻辑分区
3.只有一个扩展分区,多个逻辑分区
GPT:对2TB以内或以外的磁盘进行分区 分区工具:gdisk
只有主分区,一共可以分128个主分区,GPT大于小于2TB都可以
注:从MBR转到GPT,或从GPT转到MBR会导致数据全部丢失!
基本分区:
lsblk //查看磁盘设备
查看磁盘设备 图1
fdisk -l /dev/sdb 查看磁盘分区信息
fdisk /dev/sdb MBR磁盘分区
lsblk 查看分区结果
partprobe /dev/sdb 不重启的情况下重读分区
gdisk /dev/sdb GPT磁盘分区 使用前需要先下载yum -y install gdisk
mkfs.ext4 /dev/sdb1 格式化成ext4格式的文件系统
mkfs.xfs /dev/sdc2 格式化成xfs格式的文件系统
挂载mount使用:
mkdir /mnt/disk1 创建挂载目录
mkdir /mnt/disks 创建挂载目录
mount -o -rw /dev/sdb1 /mnt/disk1 -o 指定读写权限 -a 需要定义(/etc/fstab)执行-a才会自动挂载
mount /dev/sdc2 /mnt/disks/
df -Th 查看磁盘挂载与磁盘使用空间
unmount /mnt/disks/ 取消挂载
umount -l /mnt/disk1/ 强行卸载,即使目录有资源被进程占用,也可以卸载
fstab开机自动挂载
blkid /dev/sdb1 查看uuid和文件系统类型
/dev/sdb1: UUID="oqNVqW-K5Ey-ZQ6e-I8Vr-Hvgj-Vwxo-OUrEoq" TYPE="LVM2_member"
vim /etc/fstab
配置/etx/fstab 图2
mount -a 自动挂载
./etc/fstab文件实现开机的时候自动挂载
vim /etc/rc.d/rc.local 将挂载命令直接写到文件中
chmod +x /etc/rc.d/rc.local
reboot
文件系统分类:
本地文件系统,不能在网络上用。
ntfs xfs ext2,ext3,ext4
网络文件系统,也可以在本地用。
nfs glusterfs hdfs ceph
EXT:EXT 家族支持度最广,但创建文件系统(格式化)慢!修复慢!文件系统存储容量有限!
XFS:同样是一种日志式文件系統,高容量,支持大存储高性能,创建/修复文件系统快,格式化快
inode 与 block 都是系統需要用到時,才动态配置产生
查看inode号:
1.stat /etc/hosts
2.ls -i /etx/hosts
yum -y install lvm2 安装pv命令
创建pv:
pvcreate /dev/sdb //创建pv
pvs //查看pv
pvscan //查看pv
创建vg:
vgcreate vg1 /dev/sdb //创建vg
vgs //查看vg
vgscan //查看vg
vgdisplay //查看vg
创建lv:
lvcreate -L 150M -n lv1 vg1 //创建lv
lvcreate -l 20 -n lv2 vg1 //采用PE方式在创建一个lv
-L:指定lv的大小 -n:给创建的lv起一个名字 -l 20:指定PE
制作文件系统并挂载:
mkfs.xfs /dev/vg1/lv1 //制作xfs的文件系统
mkfs.ext4 /dev/vg1/lv2 //制作ext4的文件系统
mkdir /mnt/lv{1..2}
mount /dev/vg1/lv1 /mnt/lv1 //挂载文件系统
mount /dev/vg1/lv2 /mnt/lv2
df -Th //查看是否挂载成功
LVM逻辑卷扩容:
注:如果lv所在的vg有空间直接扩容就行
pvcreate /dev/sdc
vgextend vg1 /dev/sdc #vg1是卷组名字 //将dev/sdc扩展到vg1中
vgs //查看vg
lvextend -L 850M /dev/vg1/lv1 //扩展到850M
lvextend -L +850M /dev/vg1/lv1 //在原有基础上加850M
lvs //查看lv
lvextend -l +15 /dev/vg1/lv1 //在原有基础上加15个PE
xfs_growfs /dev/vg1/lv1 //声明xfs扩容/
6+320.resize2fs /dev/vg1/lv2 //声明ext4扩容
扩容逻辑图
交换分区
交换分区管理Swap:即虚拟内存
当内存不够用的时候使用swap分区,防止物理内存耗尽
free -m #显示内存的使用
swapon -s #查看交换分区信息
partprobe /dev/sdd #刷新分区表
mkswap /dev/sdd1 #初始化swap
vim /etc/fstab #制作开机挂载 //swap的挂载不使用mount
swapon -a #激活swap分区(读取/etc/fstab)
swapon -s #显示简短的装置信息
swapoff /dev/sdd1 #关闭swap分区
file制作
dd if =/dev/zero of=/swap.img bs=1M count=512
dd 读入 从空设备里拿空块 到交换分区 块多大 一共多少兆
mkswap /swap2.img #初始化
vim /etc/fstab
/swap2.img swap swap defaults 0 0
chmod 600 /swap2.img #交换分区权限需要设置为600,默认644权限不安全。
swapon -a
swapon -s
mount详解
mount -o 指定文件系统属性
mount -o rw 读写
mount -o ro 只读
mount -o noexec 不允许执行二进制文件
mount -o exec 允许执行二进制文件
mount -o auto mount -a 开机自动挂载
remount 在线重新挂载
umount /mnt/lv2/
raid 磁盘阵列
所有服务器在安装操作系统之前必须先做raid
raid0 ---数据条带卷
最少需要两块磁盘,分别往每一块磁盘上写一部分数据
优点:
1.读写速度快,
2.磁盘利用率:100%
缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。
应用场景:
1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
2)要求读写效率高,安全性能要求不高,如图像工作站
raid1 又叫镜像raid
通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。
一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。
优点:提供数据冗余,数据双倍存储安全性高支持容错。读速度快
缺点:写速度慢,无数据校验。磁盘利用率不高
磁盘利用率:50%
应用场景:
存放重要数据,如数据存储领域
raid5:RAID5应该是目前最常见的 RAID 等级,它的校验数据分布在阵列中的所有磁盘上。
RAID5的磁盘上同时存储数据和校验数据。当一个数据盘损坏时,系统可以根据其他数据块和对应的校验数据来重建损坏的数据。
raid5最少需要3块磁盘。
优点:
1.可以找回丢失的数据---数据可以通过校验计算得出,
2.冗余磁盘-->(需要4快磁盘将其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去
3.有校验机制
4.读写速度高
5.磁盘利用率高
缺点:
1.磁盘越多安全性能越差
应用场景:安全性高,如金融、数据库、存储等。
raid6:RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式。
最少需要四块磁盘,两块存校验位。RAID6引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。
优点:
1.容错:允许两块磁盘同时坏掉。读写快。
2.良好的随机读性能
3.有校验机制
缺点:
1.写入速度差
2.成本高
应用场景:对数据安全级别要求比较高的企业
RAID10:先做镜像再作条带--也叫混合raid
优点:
1.较高的IO性能
2.有数据冗余
3.无单点故障
4.安全性能高
缺点:成本稍高
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
NFS远程共享存储
NFS:Network File System 网络文件系统,NFS 和其他文件系统一样,是在
Linux 内核中实现的,因此 NFS 很难做到与 Windows 兼容。NFS
共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。是Unix系统之间共享文件的一种协议
NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。
NFS功能多,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。
RPC和NFS如何相互通讯:首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。
案例:
服务端操作:
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #永久关闭防火墙(慎用)
setenforce 0 #关闭selinux内核防火墙
yum -y install rpcbind nfs-utils #安装rpc协议包,安装nfs服务提供文件系统
systemctl start nfs rpcbind #启动nfs和rpcbind服务
mkdir /nfs-dir #创建存储目录
echo "nfs-test" > /nfs-dir/index.html #制作test文件
vim /etc/exports #编辑共享文件
/nfs-dir 192.168.246.0/24(rw,no_root_squash,sync)
注:ro:只读 rw:读写 *:表示共享给所有网段 sync:所有数据在请求时写入共享
root_squash:对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限
no_root_squash:使用分享目录的使用者,如果是root的话,那么对于这个分享的目录来说,他就具有root权限
共享目录 共享给谁 共享出去的文件属性
单独给一个人: 共享的哪个目录 ip地址 (rw,no_root_squash,sync)
共享给所有人: 共享的哪个目录 * (rw,no_root_squash,sync)
共享网段: 共享的哪个目录 10.18.44.0/24 (rw,no_root_squash,sync) 10.18.45.0/24(rw,no_root_squash,sync)
systemctl restart nfs-server #重启服务
systemctl ebable nfs-server #制作开机启动
exportfs -v #确认NFS服务器启动
客户端操作:
yum -y install rpcbind nfs-utils
mkdir /qf
mount -t nfs 192.168.182.130(服务端ip):/nfs-dir /qf #挂载
df -Th
ls /qf
umount /qf #取消挂载
制作开机挂载:vim /etc/fstab
192.168.182.130:/nfs-drt /qf nfs defaults 0 0
mount -a
FTP:
文件传输协议(File
Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP
基于TCP协议生成一个虚拟的连接,用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
FTP Server : 提供文件共享服务,实现上传下载
21号端口:建立tcp链接 默认端口 20号端口:传输数据
ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据
Vsftp服务器
非常安全的FTP服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。
vsftpd配置 服务端
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
touch /var/ftp/pub/test.txt #创建文件到共享目录
systemctl enable vsftpd
ls /var/ftp/ #查看该目录下发现有pub目录
chown ftp.ftp pub/ -R
ll
总用量 0
drwxr-xr-x. 2 ftp ftp 22 4月 17 21:00 pub
注:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。
修改完配置后需重启服务才能生效;还需从新客户端登录,否则修改后的配置看不到结果
vim /etc/vsftpd/vsftpd.conf #编辑配置文件
编辑配置文件 图1
编辑配置文件 图2
systemctl restart vsftpd
注释:备注时有空格记得删掉,不然配置文件没办法运行
客户端
首先关闭防火墙和selinux
yum -y install lftp 安装客户端
[root@localhost ~]# lftp 192.168.182.130
lftp 192.168.182.130:~> ls
drwxr-xr-x 2 14 50 22 Apr 17 13:00 pub
lftp 192.168.182.130:/> cd pub/
lftp 192.168.182.130:/pub> ls
-rw-r--r-- 1 14 50 0 Apr 17 13:00 test.txt
lftp 192.168.182.130:/pub> get test.txt #下载文件
lftp 192.168.182.130:/pub> exit
[root@localhost ~]# ls
anaconda-ks.cfg test.txt
[root@localhost ~]# ls
anaconda-ks.cfg test.txt #创建目录同理
[root@localhost ~]#
put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)
touch upload.txt #创建测试文件
[root@client ~]# mkdir /test/ #创建测试目录
[root@client ~]# touch /test/test1.txt #在测试目录下面创建测试文件
[root@client ~]# lftp 192.168.182.130
lftp 192.168.182.130:~> cd pub/
lftp 192.168.182.130:/pub> put /root/upload.txt #上传文件
lftp 192.168.182.130:/pub> ls
-rw------- 1 14 50 0 Nov 16 12:14 upload.txt
drwx------ 2 14 50 6 Aug 02 19:17 dir
lftp 192.168.182.130:/pub> mirror -R /test/ #上传目录以及目录中的子文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
lftp 192.168.246.160:/pub> ls
drwx------ 2 14 50 23 Nov 16 12:18 test
-rw------- 1 14 50 0 Nov 16 12:14 upload.txt
注:put: Access failed: 553 Could not create file. (upload.txt)
550报错没用权限,需要修改服务端的pub权限。
ftp配置本地用户登录
服务端:
useradd zhangsan #创建测试用户
echo '123456' | passwd --stdin zhangsan #设置密码
配置本地用户ftp配置文件
vim /etc/vsftpd/vsftpd.conf #修改配置文件
anonymous_enable=NO
#anon_umask=022 #匿名用户所上传文件的权限掩码
#anon_upload_enable=YES #允许匿名用户上传文件
#anon_mkdir_write_enable=YES #允许匿名用户创建目录
#anon_other_write_enable=YES #是否允许匿名用户有其他写入权(改名,删除,覆盖)
新添加
local_root=/home/zhangsan #设置本地用户的FTP根目录一般为用户的家目录
local_max_rate=0 #限制最大传输速率(字节/秒)0为无限制
退出vim
systemctl restart vsftpd #重启vsftpd
客户端:
lftp 192.168.153.137 -u zhangsan
Password:
lftp zhangsan@192.168.153.137:~> ls
lftp zhangsan@192.168.153.137:~> mkdir aaa
mkdir ok, `aaa' created
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x 2 1000 1000 6 Aug 02 20:55 aaa
lftp zhangsan@192.168.153.137:~> put /root/test.txt
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x 2 1000 1000 6 Aug 02 20:55 aaa
-rw-r--r-- 1 1000 1000 0 Aug 02 20:59 test.txt
服务器端查看
[root@ftp-server ~]# cd /home/zhangsan/
[root@ftp-server zhangsan]# ls
aaa test.txt
[root@ftp-server zhangsan]# ll
total 0
drwxr-xr-x. 2 zhangsan zhangsan 6 Aug 3 04:55 aaa
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 3 04:59 test.txt
uptime #查看平均负载
yum install -y iftop.x86_64 #查看带宽使用情况
第一行:界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间部分:中间的<= =>这两个左右箭头,表示的是流量的方向。=>代表发送,<=代表接收。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cum:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
网络接口统计报告
yum install -y nethogs.x86_64
nethogs
实例1:监视ens33网络带宽
# nethogs ens33
实例2:同时监视ens33和ens34接口
# nethogs ens33 ens34
apache安装
[root@qfedu.com ~]# systemctl stop firewalld
[root@qfedu.com ~]# systemctl disable firewalld
[root@qfedu.com ~]# setenforce 0
[root@qfedu.com ~]# yum install -y httpd
[root@qfedu.com ~]# systemctl start httpd
[root@qfedu.com ~]# netstat -lntp | grep 80 #查看apache端口
tcp6 0 0 :::80 :::* LISTEN 2776/httpd
#端口80.可以
index.html:默认主页名称
默认发布网站的目录:/var/www/html
系统产生apache账户,家目录通过cat /etc/passwd 查看
第一步删除: rm -rf /etc/httpd/conf.d/welcome.conf
第二部进入目录:cd /var/www/html
第三步将银河系拖入进去
第四步:mv 银河系.html index.html 也就是改名
第五步:重启httpd服务
第六步:浏览器输入服务器ip 查看页面
访问控制
echo test1 > /var/www/html/index/html #编写测试文件
vim /etc/httpd/conf/httpd.conf #编写配置文件
允许所有人访问
systemctl restart httpd #重启服务
2.只拒绝一部分客户端访问:
vim /etc/httpd/conf/httpd.conf
只拒绝一部分客户端访问
curl -I http://192.168.153.144 #用另外一台机器测试访问成功
HTTP/1.1 200 OK
Date: Thu, 06 Aug 2020 20:40:37 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 06 Aug 2020 20:12:02 GMT
ETag: "6-5ac3b1a02ac4f"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html; charset=UTF-8
3.拒绝所有人
vim /etc/httpd/conf/httpd.conf
拒绝所有人
4.只允许一部分人访问
只允许一部分访问
IP组成
IP地址是指互联网协议地址,IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,依次来屏蔽物理地址的差异。每个ip地址由两部分组成网络地址(NetID)和主机地址(HostID)。网络地址表示其属于互联网中的哪一个网络,而主机地址则表示其属于该网络中的哪一台主机。
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”,在将2进制转换为十进制。IP地址通常用“点分十进制”表示的形式,其中都是十进制整数。
例如: ( 网络位 ) (主机位) (掩码位)
192 . 168 . 223 . 3 /24
11000000 . 10101000 . 11011111 . 00000011
十进制转二进制
IP地址里面一共是32位,通常被分割为4个“8位二进制数”--将这8位列出来,2^0次方开始算,能用到的数落1不能用到的为0
128 64 32 16 8 4 2 1
192 . 168 . 223 . 0 /24
11000000 10101000 11011111 00000000
IP地址的组成
子网掩码:用于区分IP地址中的网络部分和主机部分,计算机子网掩码:网络位全1,主机位全0
网络部分(网络位):直接决定了可以分配的网络数
主机部分(主机位):决定了网络中最大的主机数
192.168.1.1/24
二进制子网掩码:11111111.11111111.11111111.00000000
十进制子网掩码:255.255.255.0
通过子网掩码:掩盖到的IP部分被叫做网络位;未被掩盖到IP的部分被叫做主机位。
网络地址:网络位照写,主机位归零。ip地址和子网掩码进行与操作得到网络地址
广播地址:网络位照写,主机位归一。ip地址与子网掩码的取反进行或操作得到广播地址
子网划分:
a.这个被选用的子网可以产生多少的子网 2的x次方=? x表示借的主机位
b.这个子网中又会有多少给合法的主机号 2的y次方-2=? y表示主机位
c.每个子网的广播地址是什么? 这个子网中的最后一个IP地址
d.32-掩码位=主机位的位数
例:30台--主机位?2的多少次方-2大于等于30?--2^5-2=30
11000000.10101000.00000001.000 00000 借走的子网【000、001、010、100、111、110、101、011】
192.168.1.0/27
255.255.255.224 子网掩码
网络位192.168.1.0---192.168.1.31--广播
可用主机范围:192.168.1.1---192.168.1.30










网友评论