linux指令
linux目录
reboot命令用于重启系统 poweroff命令用于关闭系统
yum update kernel 更新系统内核
- 系统安装自动化:kickstart,cobbler等
- 配置部署自动化:puppet,saltstart,ansible等
- 监控自动化:nagios,zabbix、promethues等
初始化
-
设置root密码
-
配置ip vim /etc/sysconfig/network-scrtipts/ifcfg-ens33
-
配置yum源:
-
yum install -y wget mkdir /etc/yum.repos.d/CentOS-Base.repo.backup mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum clean all yum makecacheyum repolist
-
-
关闭防火墙:systemctl stop firewalld
systemctl disable firewalld
-
selinux
-
临时关闭:setenforce 0
-
永久关闭:vim /etc/sysconfig/selinux
SELINUX=disabled
source /etc/sysconfig/selinux
-
-
安装常用程序
- yum install -y lrzsz sysstat elinks wget net-tools bash-comletion
-
关机快照
| 目录名称 | 应放置文件的内容 |
|---|---|
| 目录名称 | 应放置文件的内容 |
| /boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
| /dev | 以文件形式存放任何设备与接口 |
| /etc | 配置文件 |
| /home | 用户主目录 |
| /bin | 存放单用户模式下还可以操作的命令 |
| /lib | 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数 |
| /sbin | 开机过程中需要的命令 |
| /media | 用于挂载设备文件的目录 |
| /opt | 放置第三方的软件 |
| /root | 系统管理员的家目录 |
| /srv | 一些网络服务的数据文件目录 |
| /tmp | 任何人均可使用的“共享”临时目录 |
| /proc/usr/local | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等用户自行安装的软件 |
| /usr/local/usr/sbin | 用户自行安装的软件Linux系统开机时不会使用到的软件/命令/脚本 |
| /usr/sbin/usr/share | Linux系统开机时不会使用到的软件/命令/脚本帮助与说明文件,也可放置共享文件 |
| /usr/share/var | 帮助与说明文件,也可放置共享文件主要存放经常变化的文件,如日志 |
| /var/lost+found | 主要存放经常变化的文件,如日志当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
| 硬件设备 | 文件名称 |
|---|---|
| IDE设备 | /dev/hd[a-d] |
| SCSI/SATA/U盘 | /dev/sd[a-z] |
| virtio设备 | /dev/vd[a-z] |
| 软驱 | /dev/fd[0-1] |
| 打印机 | /dev/lp[0-15] |
| 光驱 | /dev/cdrom |
| 鼠标 | /dev/mouse |
| 磁带机 | /dev/st0或/dev/ht0 |
sata串口:/dev/sda s:sata d:代表磁盘 a:代表第一个
/dev/sdb s:sata d:代表磁盘 b:代表第二个
基础命令
wget
wget用于在终端命令行中下载网络文件
参数 作用 -b 后台下载模式 -P 下载到指定目录 -t 最大尝试次数 -c 断点续传 -p 下载页面内所有资源,包括图片、视频等 -r 递归下载
ps
ps命令用于查看系统中的进程状态
如果查看进程的cpu占用率和内存占用率 可以使用aux
如果想查看父进程,可以使用ef
参数 作用
| -A | 显示所有的进程,跟-e的效果相同 |
|---|---|
| -a | 显示现行终端机下的所有进程,包括其他用户的进程 |
| -u | 显示当前用户的进程状态 |
| -x | 通常与 a 这个参数一起使用,可列出较完整信息 |
| -l | 较长、较详细的将该PID的信息列出 |
| -j | 工作的格式(jobs format) |
| -f | 把进程的所有信息都显示出来 |
| -e | 表示显示所有继承 |
R(运行):进程正在运行或在运行队列中等待。 S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。 D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。 Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放 T(停止):进程收到停止信号后停止运行。
➜ test ps -aux --sort -pcpu|less -N #按照cpu占用来排序
➜ test ps -aux --sort -pmem|less -N #按照内存占用来排序
Linux pstree(英文全称:display a tree of processes)) 命令将所有进程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。
- -a 显示该进程的完整指令及参数, 如果是被记忆体置换出去的进程则会加上括号
- -c 如果有重覆的进程名, 则分开列出(预设值是会在前面加上 *)
- -p显示进程的pid
- -u显示进程的所属用户
top
top命令用于动态地监视进程活动及系统负载等信息
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
- -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
- -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
- -p 进程PID:仅查看指定 ID 的进程;
- -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
- -u 用户名:只监听某个用户的进程;
P 以cpu占用排序 默认项 M以内存使用率排序 N以pid排序 q退出
nice
nice命令用于调整进程的优先级,语法格式为“nice优先级数字 服务名称”。
pidof
pidof命令用于查询某个指定服务进程的PID号码值,语法格式为“pidof [参数] 服务名称”
kill
kill命令用于终止某个指定PID值的服务进程,语法格式为“kill [参数] 进程的PID
但有时系统会提示进程无法被终止,此时可以加参数-9,表示最高级别地强制杀死进程: [root@linuxprobe ~]# kill -9 2156
killall
killall命令用于终止某个指定名称的服务所对应的全部进程,语法格式为“killall [参数] 服务名称”
config
config命令用于获取网卡配置与网络状态等信息
uptime
uptime命令用于查看系统的负载信息
free
free命令用于显示当前系统中内存的使用量信息
who
who命令用于查看当前登入主机的用户终端信息
last
last命令用于调取主机的被访记录
tracepath
tracepath命令用于显示数据包到达目的主机时途中经过的所有路由信息,语法格式为“tracepath [参数] 域名”
tracepath
netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息,英文全称为“network status”,语法格式为“netstat [参数]”。
netstat -anp | grep 进程号 查看该进程网络信息
netstat -nlp | grep 端口号 查看端口号占用情况
- -a或--all 显示所有连线中的Socket。
- -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
- -c或--continuous 持续列出网络状态。
- -C或--cache 显示路由器配置的快取信息。
- -e或--extend 显示网络其他相关信息。
- -F或--fib 显示路由缓存。
- -g或--groups 显示多重广播功能群组组员名单。
- -h或--help 在线帮助。
- -i或--interfaces 显示网络界面信息表单。
- -l或--listening 显示监控中的服务器的Socket。
- -M或--masquerade 显示伪装的网络连线。
- -n或--numeric 直接使用IP地址,而不通过域名服务器。
- -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
- -o或--timers 显示计时器。
- -p或--programs 显示正在使用Socket的程序识别码和程序名称。
- -r或--route 显示Routing Table。
- -s或--statistics 显示网络工作信息统计表。
- -t或--tcp 显示TCP传输协议的连线状况。
- -u或--udp 显示UDP传输协议的连线状况。
- -v或--verbose 显示指令执行过程。
- -V或--version 显示版本信息。
- -w或--raw 显示RAW传输协议的连线状况。
- -x或--unix 此参数的效果和指定"-A unix"参数相同。
- --ip或--inet 此参数的效果和指定"-A inet"参数相同。
history
history命令用于显示执行过的命令历史,语法格式为“history [-c]”。
osreport
osreport命令用于收集系统配置及架构信息并输出诊断文档,输入该命令后按回车键执行即可。
pwd
pwd命令用于显示用户当前所处的工作目录
find
find命令用于按照指定条件来查找文件所对应的位置,语法格式为“find [查找范围] 寻找条件”。
按名字查找 find /etc -name '132.txt' -ls
命令 路径 参数 参数名 文件名 动作
按文件大小查找 find /etc -size + / - 大于/小于 5M
按文件深度 find /etc -maxdepth 3 -a -name 'ifcfg-ens33'
按组名/用户名查找 find /home -group/user killua
按照文件格式查找 find /dev -type f/d/b/-
按照文件权限查找并显示 find . -perm 714 -ls
查找到文件复制到tmp文件夹 后跟结束符
find /etc -name ifcfg* -ok cp -rvf {} /tmp ;
连接符 命令 占位符 结束符
-name 匹配名称 -perm 匹配权限(mode为完全匹配,-mode为包含即可) -user 匹配所有者 -group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前) -atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前) -ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) -nouser 匹配无所有者的文件 -nogroup 匹配无所有组的文件 -newer f1 !f2 匹配比文件f1新但比f2旧的文件 -type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) -size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) -prune 忽略某个目录 -exec …… {}; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)
locate
locate命令用于按照名称快速搜索文件所对应的位置,语法格式为“locate文件名称” 第一次使用locate命令之前,记得先执行updatedb命令来生成索引数据库,然后再进行查找: [root@linuxprobe ~]# updatedb [root@linuxprobe ~]# ls -l /var/lib/mlocate/mlocate.db -rw-r-----. 1 root slocate 2945917 Sep 13 17:54 /var/lib/mlocate/mlocate
whereis
whereis命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置,语法格式为“whereis命令名称”。
cat
cat命令用于查看纯文本文件(内容较少的),英文全称为“concatenate”,语法格式为“cat [参数] 文件名称”。 如果在查看文本内容时还想顺便显示行号的话,不妨在cat命令后面追加一个-n参数:
more
more命令用于查看纯文本文件(内容较多的),语法格式为“more [参数] 文件名称”。
head
head命令用于查看纯文本文件的前N行,语法格式为“head [参数] 文件名称”
tail
tail命令用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式为“tail [参数] 文件名称”。
tr
tr命令用于替换文本内容中的字符,英文全称为“transform”,语法格式为“tr [原始字符] [目标字符]”。
wc
wc命令用于统计指定文本文件的行数、字数或字节数,英文全称为“word counts”,语法格式为“wc [参数] 文件名称”。
参数 作用 -l 只显示行数 -w 只显示单词数 -c 只显示字节数
stat
stat命令用于查看文件的具体存储细节和时间等信息,英文全称为“status”,语法格式为“stat文件名称”
grep
grep命令用于按行提取文本内容,语法格式为“grep [参数] 文件名称”。
参数 作用 -b 将可执行文件(binary)当作文本文件(text)来搜索 -c 仅显示找到的行数 -i 忽略大小写 -n 显示行号 -v 反向选择——仅列出没有“关键词”的行。
cut
cut命令用于按“列”提取文本内容,语法格式为“cut [参数] 文件名称” 但是如果按“列”搜索,不仅要使用-f参数设置需要查看的列数,还需要使用-d参数来设置间隔符号
diff
diff命令用于比较多个文件之间内容的差异,英文全称为“different”,语法格式为“diff [参数] 文件名称A 文件名称B”。 在使用diff命令时,不仅可以使用--brief参数来确认两个文件是否相同,还可以使用-c参数来详细比较出多个文件的差异之处。
uniq
uniq命令用于去除文本中连续的重复行,英文全称为“unique”,语法格式为“uniq [参数] 文件名称”。
sort
sort命令用于对文本内容进行再排序,语法格式为“sort [参数] 文件名称”
参数 作用 -f 忽略大小写 -b 忽略缩进与空格 -n 以数值型排序 -r 反向排序 -u 去除重复行 -t 指定间隔符 -k 设置字段范围
touch
touch命令用于创建空白文件或设置文件的时间,语法格式为“touch [参数] 文件名称”。
参数 作用 -a 仅修改“读取时间”(atime) -m 仅修改“修改时间”(mtime) -d 同时修改atime与mtime
mkdir
mkdir命令用于创建空白的目录,英文全称为“make directory”,语法格式为“mkdir [参数] 目录名称” mkdir命令还可以结合-p参数来递归创建出具有嵌套层叠关系的文件目录: [root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e [root@linuxprobe linuxprobe]# cd a [root@linuxprobe a]# cd b [root@linuxprobe b]#
cp
cp命令用于复制文件或目录,英文全称为“copy”,语法格式为“cp [参数] 源文件名称 目标文件名称”。
1、如果目标文件是目录,则会把源文件复制到该目录中; 2、如果目标文件也是普通文件,则会询问是否要覆盖它; 3、如果目标文件不存在,则执行正常的复制操作。
参数 作用 -p 保留原始文件的属性 -d 若对象为“链接文件”,则保留该“链接文件”的属性 -r 递归持续复制(用于目录) -i 若目标文件存在则询问是否覆盖 -a 相当于-pdr(p、d、r为上述参数)
mv
mv命令用于剪切或重命名文件,英文全称为“move”,语法格式为“mv [参数] 源文件名称 目标文件名称”。
rm命令用于删除文件或目录,英文全称为“remove”,语法格式为“rm [参数] 文件 名称” 在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,>要想删除一个目录,需要在rm命令后面加一个-r参数才可以,否则删除不掉 参数 作用 -f 强制执行 -i 删除前询问 -r 删除目录 -v 显示过程
dd
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为“dd if=参数值of=参数值count=参数值bs=参数值”。
dd命令是一个比较重要而且比较有特色的命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容。当然,如果愿意的话,还可以在复制过程中转换其中的数据。Linux系统中有一个为/dev/zero的设备文件,每次在课堂上解释它时都充满哲学理论的色彩。因为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此常常使用它作为dd命令的输入文件,来生成一个指定大小的文件。
参数 作用 if 输入的文件名称 of 输出的文件名称 bs 设置每个“块”的大小 count 设置要复制“块”的个数
file
file命令用于查看文件的类型,语法格式为“file文件名称”。
tar
tar命令用于对文件进行打包压缩或解压,语法格式为“tar参数 文件名称”。
tar -cvf etc.tar /etc
压缩 参数 压缩后的文件名 压缩的文件路径
tar -cxv etc.tar /etc
压缩 参数 需要解压的文件名 压缩的文件路径
参数 作用 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 用Gzip压缩或解压
-j 用bzip2压缩或解压 -v 显示压缩或解压的过程 -f 目标文件名 -p 保留原始的权限与属性 -P 使用绝对路径来压缩 -C 指定解压到的目录 首先,-c参数用于创建压缩文件,-x参数用于解压文件,因此这两个参数不能同时使用。其次,-z参数指定使用gzip格式来压缩或解压文件,-j参数指定使用bzip2格式来压缩或解压文件。用户使用时则是根据文件的后缀来决定应使用何种格式的参数进行解压。在执行某些压缩或解压操作时,可能需要花费数个小时,>如果屏幕一直没有输出,您一方面不好判断打包的进度情况,另一方面也会怀疑电脑死机了,因此非常推荐使用-v参数向用户不断显示压缩或解压的过程。-C参数用于指定要解压到哪个指定的目录。-f参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。刘遄老师一般使用“tar -czvf压缩包名称.tar.gz要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf压缩包名称.tar.gz”。
nptdate
nptdate 同步时间
cal 日历 cal -3 显示三个月的日历 cal -m 周一在前面显示
useradd
useradd 用户名 添加新用户 useradd -g 组名 用户名 添加新用户到某个组
passwd [选项] 用户名
-S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用; -l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用; -u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用; --stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用; -n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段; -x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段; -w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段; -i 日期:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。 为了方便系统管理,passwd 命令提供了 --stdin 选项,用于批量给用户设置初始密码。使用此方式批量给用户设置初始密码,当然好处就是方便快捷,但需要注意的是,这样设定的密码会把密码明文保存在历史命令中,如果系统被攻破,别人可以在 /root/.bash_history 中找到设置密码的这个命令,存在安全隐患。因此,读者如果使用这种方式修改密码,那么应该记住两件事情:第一,手工清除历史命令;第二,强制这些新添加的用户在第一次登录时必须修改密码(具体方法参考 "chage" 命令)。
useradd [选项] 用户名
-u UID 手工指定用户的 UID,注意 UID 的范围(不要小于 500)。 -d 主目录 手工指定用户的主目录。主目录必须写绝对路径,而且如果需要手工指定主目录,则一定要注意权限; -c 用户说明 手工指定/etc/passwd文件中各用户信息中第 5 个字段的描述性内容,可随意配置; -g 组名 手工指定用户的初始组。一般以和用户名相同的组作为用户的初始组,在创建用户时会默认建立初始组。一旦手动指定,则系统将不会在创建此默认的 初始组目录。 -G 组名 指定用户的附加组。我们把用户加入其他组,一般都使用附加组; -s shell 手工指定用户的登录 Shell,默认是 /bin/bash; -e 曰期 指定用户的失效曰期,格式为 "YYYY-MM-DD"。也就是 /etc/shadow 文件的第八个字段; -o 允许创建的用户的 UID 相同。例如,执行 "useradd -u 0 -o usertest" 命令建立用户 usertest,它的 UID 和 root 用户的 UID 相同,都是 0; -m 建立用户时强制建立用户的家目录。在建立系统用户时,该选项是默认的; -r 创建系统用户,也就是 UID 在 1~499 之间,供系统程序使用的用户。由于系统用户主要用于运行系统所需服务的权限配置,因此系统用户的创建默认 不会创建主目录。
usermod [选项] 用户名
-c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段; -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径; -e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD",即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段; -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID); -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID); -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件; -l 用户名:修改用户名称; -L:临时锁定用户(Lock); -U:解锁用户(Unlock),和 -L 对应; -s shell:修改用户的登录 Shell,默认是 /bin/bash。
除了 passwd -S 命令可以查看用户的密码信息外,还可以利用 chage 命令,它可以显示更加详细的用户密码信息,并且和 passwd 命令一样,提供了修改用户 密码信息的功能。
chage [选项] 用户名
-l:列出用户的详细密码状态; -d 日期:修改 /etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD; -m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第 4 个字段; -M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第 5 个字段; -W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第 6 个字段; -i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第 7 个字段; -E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第 8 个字段。
id 命令可以查询用户的UID、GID 和附加组的信息。命令比较简单,格式如下: id 用户名
su 是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切>换。
su [选项] 用户名
-:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会>切换为 root 用户。 -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。 -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。 -m:和 -p 一样; -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。
执行 whoami 命令,等同于执行 id -un 命令;执行 who am i 命令,等同于执行 who -m 命令。 也就是说,使用 su 或者 sudo 命令切换用户身份,骗得过 whoami,但骗不过 who am i。要解释这背后的运行机制,需要搞清楚什么是实际用户(UID)和有>效用户(EUID,即 Effective UID)。 也就是说,使用 su 或者 sudo 命令切换用户身份,骗得过 whoami,但骗不过 who am i。要解释这背后的运行机制,需要搞清楚什么是实际用户(UID)和有>效用户(EUID,即 Effective UID)。 所谓实际用户,指的是登陆 Linux 系统时所使用的用户,因此在整个登陆会话过程中,实际用户是不会发生变化的;而有效用户,指的是当前执行操作的用户>,也就是说真正决定权限高低的用户,这个是能够利用 su 或者 sudo 命令进行任意切换的。 一般情况下,实际用户和有效用户是相同的,如果出现用户身份切换的情况,它们会出现差异。需要注意的是,实际用户和有效用户出现差异,切换用户并不是 唯一的触发机制,至于其他的触发条件,后续章节会做详细介绍。 那么,whoami 和 who am i通常应用在哪些场景中呢?通常,对那些经常需要切换用户的系统管理员来说,经常需要明确当前使用的是什么身份;另外,对于某 些 shell 脚本,或者需要特别的用户才能执行,这时就需要利用 whoami 命令来搞清楚执行它的用户是谁;甚至还有一些 shell 脚本,一定要某个特别用户才 能执行,即便使用 su 或者 sudo 命令切换到此身份都不行,此时就需要利用 who am i 来确认。
groupadd
添加用户组的命令是 groupadd [选项] 组名
-g GID:指定组 ID; -r:创建系统群组。
groupmod
用于修改用户组的相关信息,groupmod [选现] 组名
-g GID:修改组 ID; -n 新组名:修改组名;
groupdel
groupdel 命令用于删除用户组(群组),此命令基本格式为:
groupdel 组名
chgrp
chgrp 命令的用法很简单,其基本格式为:
[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名) -R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。 使用此命令需要注意的一点是,要被改变的群组名必须是真实存在的,否则命令无法正确执行,会提示 "invaild group name"。
chmod
使用数字修改文件权限的 chmod 命令基本格式为: [root@localhost ~]# chmod [-R] 权限值 文件名 -R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限。
cat
用法:cat [选项]… [文件]…
将[文件]或标准输入组合输出到标准输出。 -A, --show-all 等于-vET -b, --number-nonblank 对非空输出行编号 -e 等于-vE -E, --show-ends 在每行结束处显示"$" -n, --number 对输出的所有行编号 -s, --squeeze-blank 不输出多行空行 -t 与-vT 等价 -T, --show-tabs 将跳格字符显示为^I -v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
less
功能:less命令可以对文件或其他输出进行分页显示,与more命令相似。退出按q。
用法:more [选项]… [文件]… -a:在当前屏幕显示最后 -c:从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新; -f:强制打开文件,二进制文件显示时,不提示警告; -i:搜索时忽略大小写;除非搜索串中包含大写字母; -I:搜索时忽略大小写,除非搜索串中包含小写字母; -m:显示当前读取文件的百分比; -M:显示当前读取文件的百分比、行号及总行数; -N:在每行前输出行号 -p pattern:搜索日志文件中含有pattern的所有日志内容; -s:把连续多个空白行作为一个空白行显示 -Q:在终端下不响铃
alias
别名系统 可以设置命令的别称
alias shuijiao='init 0'
alias chongqi='reboot'
head
head功能:用于显示文本文件的末尾几行。
用法:head [选项]… [文件]… -b Number:从Number变量表示的512字节块位置开始读取制定文件。 -c Number:从Number变量表示的字节位置开始读取指定文件。 -f :tail-f 命令可用于监视另一个进程正在写入的文件的增长。 -k Number:从Number变量表示的1KB块位置开始读取制定文件。 -m Number:从Number变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。 -n Number:从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并通过行号Number 进行位移。
文件和目录的真正初始权限,可通过以下的计算得到: 文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限
getfacl
getfacl 命令用于查看文件或目录当前设定的 ACL 权限信息。该命令的基本格式为:
getfacl 文件名
setfacl
setfacl 命令可直接设定用户或群组对指定文件的访问权限。此命令的基本格式为:
setfacl 选项 文件名 -m 参数 设定 ACL 权限。如果是给予用户 ACL 权限,参数则使用 "u:用户名:权限" 的格式,例如 setfacl -m u:st:rx /project 表示设定 st 用户对 project 目录具有 rx 权限;如果是给予组 ACL 权限,参数则使用 "g:组名:权限" 格式,例如 setfacl -m g:tgroup:rx /project 表示设定群组 tgroup 对 project 目录具有 rx 权限。 -x 参数 删除指定用户(参数使用 u:用户名)或群组(参数使用 g:群组名)的 ACL 权限,例如 setfacl -x u:st /project 表示删除 st 用户对 project 目 录的 ACL 权限。 -b 删除所有的 ACL 权限,例如 setfacl -b /project 表示删除有关 project 目录的所有 ACL 权限。 -d 设定默认 ACL 权限,命令格式为 "setfacl -m d:u:用户名:权限 文件名"(如果是群组,则使用 d:g:群组名:权限),只对目录生效,指目录中新建>立的文件拥有此默认权限,例如 setfacl -m d:u:st:rx /project 表示 st 用户对 project 目录中新建立的文件拥有 rx 权限。 -R 递归设定 ACL 权限,指设定的 ACL 权限会对目录下的所有子文件生效,命令格式为 "setfacl -m u:用户名:权限 -R 文件名"(群组使用 g:群组名:>权限),例如 setfacl -m u:st:rx -R /project 表示 st 用户对已存在于 project 目录中的子文件和子目录拥有 rx 权限。 -k 删除默认 ACL 权限。
SetUID
设定与取消 SetUID 的方法如下:
在所有者权限之前加上 4 代表SetUID,设定方法为:chmod 4755 文件名,相应的取消 SetUID 方法为:chmod 755 文件名。 还有设定方法为: chmod u+s 文件名,相应的取消 SetUID 方法为:chmod u-s 文件名。
chattr
chattr 命令,专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。该命令的基本格式为:
chattr [+-=] [属性] 文件或目录名
表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。 属性选项 功能 i 如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据; 如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件; a 如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据; 如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件; u 设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录。 s 和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。
SBIT
现在,大学里的很多老师都要求学生将作业上传到服务器的特定共享目录中,但总是有几个“破坏分子”喜欢删除其他同学的作业,这时就要设置SBIT(Sticky Bit)特殊权限位了(也可以称之为特殊权限位之粘滞位)。SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。
| 参数 | 作用 |
|---|---|
| u+s | 设置SUID权限 |
| u-s | 取消SUID权限 |
| g+s | 设置SGID权限 |
| g-s | 取消SGID权限 |
| o+t | 设置SBIT权限 |
| o-t | 取消SBIT权限 |
lsattr
lsattr 命令,用于显示文件或目录的隐藏属性,其基本格式如下:
lsattr [选项] 文件或目录名 -a:后面不带文件或目录名,表示显示所有文件和目录(包括隐藏文件和目录) -d:如果目标是目录,只会列出目录本身的隐藏属性,而不会列出所含文件或子目录的隐藏属性信息; -R:和 -d 恰好相反,作用于目录时,会连同子目录的隐藏信息数据也一并显示出来。
udo 命令默认只有 root 用户可以运行,该命令的基本格式为:
sudo
sudo [-b] [-u 新使用者账号] 要执行的命令
常用的选项与参数: -b :将后续的命令放到背景中让系统自行运行,不对当前的 shell 环境产生影响。 -u :后面可以接欲切换的用户名,若无此项则代表切换身份为 root 。 -l:此选项的用法为 sudo -l,用于显示当前用户可以用 sudo 执行那些命令。
du与df
du 查看目录大小,df 查看磁盘使用情况。
df -h 命令查看:文件系统 容量 已用 可用 已用占比 挂载点 (列标题)
1、du (disk usage):显示每个文件和目录的磁盘使用空间,也就是文件的大小。
-a // 显示目录中文件的大小 单位 KB 。
-b // 显示目录中文件的大小,以字节byte为单位。
-c // 显示目录中文件的大小,同时也显示总和;单位KB。
-k 、 -m // 显示目录中文件的大小,-k 单位KB,-m 单位MB.
-s // 仅显示目录的总值,单位KB。
-h // 以K M G为单位显示,提高可读性~~~(最常用的一个~也可能只用这一个就满足需求了)
--max-depth=1 // 显示层级
2、df(disk free):显示磁盘分区上可以使用的磁盘空间
// 命令参数
-a // 查看全部文件系统,单位默认KB
-h // 使用-h选项以KB、MB、GB的单位来显示,可读性高~~~(最常用)
新加硬盘操作
1、lsblk查看是否读取到硬盘 例如:读取到 sdb盘
2 、fdisk /dev/sdb 进行磁盘分区会话
n 划分分区 --p主分区 mbr只能4个,e是扩展分区。--填写分区编号:1-4.---选择扇区的大小,默认为2048默认回车.--设置last分区大小,可以以G为结尾“+2G“,但为生效,按 w 写入
partprobe /dev/sdb准备是用于重读分区表信息。将磁盘分区表变化信息通知给系统内核,请求操作系统重新加载分区表,有时当我们创建或删除分区设备后,系统并不会立即生效,这时就需要使用partprobe命令在不重启的情况下重新读取分区表信息,使得新设备信息被同步。
创建文件系统
make 创造 file 文件 system系统 extend4 拓展
mkfs.ext4 /dev/sdb1
mount -t ext4 /dev/sdb1 /mnt/disk1
df -hT可以查看硬盘占用信息
fdisk /dev/sdb
1.n 2.p 3.1-4 4.回车 5.设置大小 6.w
partprobe /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /mnt/disk2
mount -t ext4 /dev/sdb2 /mnt/disk2
在 /etc/fstab 文件中添加条目以便永久启动时自动挂载
lvm
- [root@wangxw ~]# pvcreate /dev/sdd Physical volume "/dev/sdd" successfully created.
- [root@wangxw ~]# vgcreate vg1 /dev/sdd Volume group "vg1" successfully create
- [root@wangxw ~]# lvcreate -L 4G -n lv1 vg1 Logical volume "lv1" created.创建逻辑卷 -L 大小 -n 卷名 lv1创建的逻辑区名 vg1卷组名
-
[root@linuxprobe ~]# lvdisplay --- Logical volume --- LV Path /dev/storage/vo LV Name vo - [root@wangxw ~]# mkfs.ext4 /dev/vg1/lv1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2)。。。。。
- [root@wangxw ~]# mkdir /mnt/lv1 创建挂载点
- [root@wangxw ~]# mount /dev/vg1/lv1 /mnt/lv1
-
echo "/dev/vg1/lv1 /lv1 ext4 defaults 0 0" >> /etc/fstab #写入
逻辑卷扩展
-
umount /mnt/lv1卸载挂载点
扩大vg pvcreate /dev/sde
vgs查看vg空间 pvs查看pv物理卷空间
-
lvextend -L +4G /dev/vg1/lv1 -
e2fsck -f /dev/vg1/lv1 #检查硬盘的完整性 -
resize2fs /dev/vg1/lv1 #同步内核 -
mount -a #重新挂载
lsblk
lsblk 列出所有设备挂载情况
lsblk -f 查看详细的设备挂载情况 显示文件系统信息
NAME:这是块设备名。 MAJ:MIN:本栏显示主要和次要设备号。 RM:本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。 SIZE:本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。 RO:该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。 TYPE:本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。 MOUNTPOINT:本栏指出设备挂载的挂载点。
-a, --all 显示所有设备。
-b, --bytes 以bytes方式显示设备大小。
-d, --nodeps 不显示 slaves 或 holders。
-D, --discard print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs 显示文件系统信息。
-h, --help 显示帮助信息。
-i, --ascii use ascii characters only。
-m, --perms 显示权限信息。
-l, --list 使用列表格式显示。
-n, --noheadings 不显示标题。
-o, --output <list> 输出列。
-P, --pairs 使用key="value"格式显示。
-r, --raw 使用原始格式显示。
-t, --topology 显示拓扑结构信息。
mount / umount 挂载/卸载
mount命令用于挂载文件系统,格式为“mount文件系统 挂载目录”
| 参数 | 作用 |
|---|---|
| -a | 挂载所有在/etc/fstab中定义的文件系统 |
| -t | 指定文件系统的类型 |
如果在工作中要挂载一块网络存储设备,该设备的名字可能会变来变去,这样再写为sdb就不太合适了。这时推荐用UUID(Universally Unique Identifier,通用唯一识别码)进行挂载操作。UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备。那么,怎么才能得知独立硬盘的UUID呢?答案是使用blkid命令。
blkid
blkid命令用于显示设备的属性信息,英文全称为“block id”,语法格式为“blkid [设备名]”。
UUID(Universally Unique Identifier,通用唯一识别码)进行挂载操作。UUID是一串用于标识每块独立硬盘的字符串,具有唯一性及稳定性,特别适合用来挂载网络设备
mount UUID=478fRb-1pOc-oPXv-fJOS-tTvH-KyBz-VaKwZG /backup
虽然按照上面的方法执行mount命令后就能立即使用文件系统了,但系统在重启后挂载就会失效,也就是说需要每次开机后都手动挂载一下。这肯定不是我们想要的效果,如果想让硬件设备和目录永久地进行自动关联,就必须把挂载信息按照指定的填写格式“设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检”写入到/etc/fstab文件中。这个文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能一劳永逸了。
写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载
umount
umount命令用于卸载设备或文件系统,英文全称为“un mount”,语法格式为“umount [设备文件/挂载目录]”。
[root@linuxprobe ~]# umount /dev/sdb2
fdisk
fdisk /dev/sdb
fdisk命令用于新建、修改及删除磁盘的分区表信息,英文全称为“format disk”,语法格式为“fdisk磁盘名称”。
在Linux系统中,管理硬盘设备最常用的方法就当属fdisk命令了。它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。不过与前面讲解的直接写到命令后面的参数不同,这条命令的参数是交互式的一问一答的形式,因此在管理硬盘设备时特别方便,可以根据需求动态调整。
| 参数 | 作用 |
|---|---|
| m | 查看全部可用的参数 |
| n | 添加新的分区 |
| d | 删除某个分区信息 |
| l | 列出所有可用的分区类型 |
| t | 改变某个分区的类型 |
| p | 查看分区表信息 |
| w | 保存并退出 |
| q | 不保存直接退出 |
有些时候系统并没有自动把分区信息同步给Linux内核,而且这种情况似乎还比较常见(但不能算作严重的bug)。可以输入partprobe命令手动将分区信息同步到内核,而且一般推荐连续两次执行该命令,效果会更好。
在Linux系统中用于格式化操作的命令是mkfs。这条命令很有意思,因为在Shell终端中输入mkfs名后再敲击两下用于补齐命令的Tab键,会有如下所示的效果:
[root@linuxprobe ~]# mkfs
mkfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
Linux系统的设计初衷就是让许多人一起使用并执行各自的任务,从而成为多用户、多任务的操作系统。但是,硬件资源是固定且有限的,如果某些用户不断地在Linux系统上创建文件或者存放电影,硬盘空间总有一天会被占满。针对这种情况,root管理员就需要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。可以使用quota技术进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota技术还有软限制和硬限制的功能。
软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
RHEL 8系统中已经安装了quota磁盘容量配额服务程序包,但存储设备却默认没有开启对quota技术的支持,此时需要手动编辑配置文件并重启一次系统,让系统中的启动目录(/boot)能够支持quota磁盘配额技术。
fs_quota命令用于管理设备的磁盘容量配额,语法格式为“xfs_quota [参数] 配额 文件系统”。
这是一个专门针对XFS文件系统来管理quota磁盘容量配额服务而设计的命令。其中,-c参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota服务进行更多复杂的配置。接下来使用xfs_quota命令来设置用户tom对/boot目录的quota磁盘容量配额。具体的限额控制包括:硬盘使用量的软限制和硬限制分别为3MB和6MB;创建文件数量的软限制和硬限制分别为3个和6个。
[root@linuxprobe ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot
[root@linuxprobe ~]# xfs_quota -x -c report /boot
User quota on /boot (/dev/sda1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 114964 0 0 00 [--------]
tom 0 3072 6144 00 [--------]
上面所使用的参数分为两组,分别是isoft/ihard与bsoft/bhard,下面深入讲解一下。在6.3节中曾经讲过,在Linux系统中每个文件都会使用一个独立的inode信息块来保存属性信息,一个文件对应一个inode信息块,所以isoft和ihard就是通过限制系统最大使用的inode个数来限制了文件数量。bsoft和bhard则是代表文件所占用的block大小,也就是文件占用的最大容量的总统计。
soft是软限制,超过该限制后也只是将操作记录写到日志中,不对用户行为进行限制。而hard是硬限制,一旦超过系统就会马上禁止,用户再也不能创建或新占任何的硬盘容量。
edquota
edquota命令用于管理系统的磁盘配额,英文全称为“edit quota”,语法格式为“edquota [参数] 用户名”。
在为用户设置了quota磁盘容量配额限制后,可以使用edquota命令按需修改限额的数值。其中,-u参数表示要针对哪个用户进行设置;-g参数表示要针对哪个用户组进行设置,如表6-6所示。
| 参数 | 作用 |
|---|---|
| -u | 对某个用户进行设置 |
| -g | 对某个用户组进行设置 |
| -p | 复制原有的规则到新的用户/组 |
| -t | 限制宽限期限 |
配置本地源
/etc/yum.repo.d
打开*.repo 观察是否为国外地址
备份删除官方yum库
mv /etc/yum.repos.d/* /tmp
编写本地yum库
vim /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=file:///mnt/cdrom
gpgcheck=0
挂载光盘
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
全新安装 yum -y install httpd vsftpd
重新安装 yum -y reinstall httpd
升级安装 yum -y update (不跟软件名会升级系统)httpd
查询是否安装 yum list httpd
卸载安装 yum remove httpd
rpm
RPM 二进制包命名的一般格式如下:
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
| 安装路径 | 含 义 |
|---|---|
| /etc/ | 配置文件安装目录 |
| /usr/bin/ | 可执行的命令安装目录 |
| /usr/lib/ | 程序所使用的函数库保存位置 |
| /usr/share/doc/ | 基本的软件使用手册保存位置 |
| /usr/share/man/ | 帮助文件保存位置 |
rpm -ivh 包全名 安装包
-
-i:安装(install);
-
-v:显示更详细的信息(verbose);
-
-h:打印 #,显示安装进度(hash);
rpm -qa 查询所按照的所有rpm软件包 rpm -qa more 分页显示 rpm -qa grep X [rpm -qa grep firefox] 分页过滤 rpm -q 软件包名 查询软件包是否按照 rpm -qi 软件包名 查询软件包信息[查询rpm包按照软件的信息] rpm -ql 软件包名 查询软件包中的文件安装到哪里去了 rpm -qf 文件全路径名 查询文件所属的软件包 rpm -qf /etc/passwd rpm -qc 软件包名 查看已安装软件包的配置 rpm -qR 软件包名 查看已安装软件包所依赖的软件包及文件 查看软件包的安装文件 rpm -qpi 软件包的安装文件名 查看一个软件包的安装文件的详细信息 rpm -qpl 软件安装包文件名 查看软件包的安装文件所包含的文件 rpm -qpR 软件包的安装文件名 查看软件包的依赖关系 yum check-update 列出所有可更新的软件清单命令 yum update 更新所有软件命令 yum install <package_name> 仅安装指定的软件命令 yum update <package_name> 仅更新指定的软件命令 yum list 列出所有可安裝的软件清单命令 yum remove <package_name> 删除软件包命令 yum search 查找软件包命令 清除缓存命令 yum clean packages 清除缓存目录下的软件包 yum clean headers 清除缓存目录下的 headers yum clean oldheaders 清除缓存目录下旧的 headers yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的 headers rpm -e RPM包的名称 删除包
[root@localhost 下载]# ls
tengine-2.3.2.tar.gz
[root@localhost 下载]# tar xvf tengine-2.3.2.tar.gz
[root@localhost 下载]# ls -l
总用量 2776
drwxrwxr-x. 13 root root 4096 9月 5 2019 tengine-2.3.2
-rw-r--r--. 1 root root 2835884 4月 11 16:20 tengine-2.3.2.tar.gz
[root@localhost 下载]# cd tengine-2.3.2/
[root@localhost tengine-2.3.2]# ls
AUTHORS.te CHANGES.cn configure html modules src
auto CHANGES.te contrib LICENSE packages tests
CHANGES conf docs man README.markdown THANKS.te
[root@localhost tengine-2.3.2]# ./configure --user=www --group=www --prefix=/usr/local/niginx
# 指定www用户 www组 路径为/usr/local/niginx
[root@localhost tengine-2.3.2]# make
# 编译
[root@localhost tengine-2.3.2]# make install
#安装
rpm:已经编译,直接安装,无法修改,简单快捷。
源码包,需要编译,可以修改,操作繁琐。
rpm包管理办法:
yum:解决依赖关系,需要设置:
1配置yum源,vim /etc/yum.repos.d/*.repo
[库的名称] baseurl=下载地址 gpgcheck=校验enabled=开关
2:安装卸载
yum install -y 软件包1 软件包2
yum list 包1 查看
yum remove 包1 卸载
rpm:软件安装卸载,无法解决依赖,不需要配置。
rpm -ivh 包1 安装
rpm -q 查询
rpm -e 卸载
源码包:
解压包 tar -xvf 包
配置包 ./configure
编译 make
安装 make install
扩展功能:软件包怎么管
配置阿里源
清理备份原有yum配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载阿里官网配置 执行安装
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
更新yum仓库
yum makecache
列出yum源
yum repolist
yum provides vim 可以查看使用vim命令需要安装什么包
重定向
ls -l /etc | wc -l
显示 etc所有文件的数量
date > time.txt
操作 > 目的
FD是访问文件的标识,即链接文件,省去路径
0 stdin 是键盘只读
1,2 1stdout输出信息
2stderr输出错误的信息(抛出错误的信息) 1.2是终端,可以理解为屏幕
yum install httpd &> /dev/null
比如安装服务时 显示200行信息 不需要看信息可以&> 重定向到dev/null里
3+... 是文件 可读可写
标准输入: <等价0< 或< 输入重定向发邮件
VDO(Virtual Data Optimize,虚拟数据优化)
是一种通过压缩或删除存储设备上的数据来优化存储空间的技术。
VDO技术的关键就是对硬盘内原有的数据进行删重操作,它有点类似于我们平时使用的网盘服务,在第一次正常上传文件时速度特别慢,在第二次上传相同的文件时仅作为一个数据指针,几乎可以达到“秒传”的效果,无须再多占用一份空间,也不用再漫长等待。除了删重操作,VDO技术还可以对日志和数据库进行自动压缩,进一步减少存储浪费的情况。
Linux系统中存在软链接和硬链接两种不同的类型。
软链接(soft link):
也叫符号链接(symbolic link),仅仅包含所链接文件的名称和路径,很像一个记录地址的标签。当原始文件被删除或移动后,新的链接文件也会随之失效,不能被访问。可以针对文件、目录设置软链接,跨文件系统进行链接也不是问题。从这一点来看,它与Windows系统的“快捷方式”具有一样的性质。用户访问软链接的效果如图6-15所示。
硬链接(hard link):
可以将它理解为一个“指向原始文件block的指针”,系统会创建出一个与原来一模一样的inode信息块。所以,硬链接文件与原始文件其实是一模一样的,只是名字不同。每添加一个硬链接,该文件的inode个数就会增加1;而且只有当该文件的inode个数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件block的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,不能跨分区对目录文件进行硬链接。用户访问硬链接的效果如图6-16所示。
ln
ln命令用于创建文件的软硬链接,英文全称为“link”,语法格式为“ln [参数]原始文件名 链接文件名”。
ln命令的可用参数以及作用如表6-8所示。在使用ln命令时,是否添加-s参数,将创建出性质不同的两种“快捷方式”。因此如果没有扎实的理论知识和实践经验做铺垫,尽管能够成功完成实验,但永远不会明白为什么会成功。
| 参数 | 作用 |
|---|---|
| -s | 创建“符号链接”(如果不带-s参数,则默认创建硬链接) |
| -f | 强制创建文件或目录的链接 |
| -i | 覆盖前先询问 |
| -v | 显示创建链接的过程 |
RAID 0、1、5、10方案技术对比
| RAID级别 | 最少硬盘 | 可用容量 | 读写性能 | 安全性 | 特点 |
|---|---|---|---|---|---|
| 0 | 2 | n | n | 低 | 追求最大容量和速度,任何一块盘损坏,数据全部异常。 |
| 1 | 2 | n/2 | n | 高 | 追求最大安全性,只要阵列组中有一块硬盘可用,数据不受影响。 |
| 5 | 3 | n-1 | n-1 | 中 | 在控制成本的前提下,追求硬盘的最大容量、速度及安全性,允许有一块硬盘异常,数据不受影响。 |
| 10 | 4 | n/2 | n/2 | 高 | 综合RAID1和RAID0的优点,追求硬盘的速度和安全性,允许有一半硬盘异常(不可同组),数据不受影响 |
mdadm
mdadm命令用于创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,语法格式为“mdadm参数 硬盘名称”。
| 参数 | 作用 |
|---|---|
| -a | 检测设备名称 |
| -n | 指定设备数量 |
| -l | 指定RAID级别 |
| -C | 创建 |
| -v | 显示过程 |
| -f | 模拟设备损坏 |
| -r | 移除设备 |
| -Q | 查看摘要信息 |
| -D | 查看详细信息 |
| -S | 停止RAID磁盘阵列 |
带外配置raid
1、创建4块硬盘
2、接下来,使用mdadm命令创建RAID 10,名称为“/dev/md0”。
mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
3、初始化过程大约需要1分钟左右,期间可以用-D参数进行查看。也可以用-Q参数查看简要信息:
[root@linuxprobe ~]# mdadm -Q /dev/md0
4、等两三分钟后,把制作好的RAID磁盘阵列格式化为Ext4格式:
[root@linuxprobe ~]# mkfs.ext4 /dev/md0
5、随后,创建挂载点,将硬盘设备进行挂载操作:
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount /dev/md0 /RAID
[root@linuxprobe ~]# df -h
6、再来查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确:
[root@linuxprobe ~]# mdadm -D /dev/md0
7、如果想让创建好的RAID磁盘阵列能够一直提供服务,不会因每次的重启操作而取消,那么一定要记得将信息添加到/etc/fstab文件中,这样可以确保在每次重启后RAID磁盘阵列都是有效的。
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe ~]# cat /etc/fstab
...
/dev/md0 /RAID ext4 defaults 0 0
损坏磁盘阵列及修复
1、在确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变:
[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@linuxprobe ~]# mdadm -D /dev/md0
进程管理
正在执行的程序或命令叫做进程 process
启动之后已在存在常驻内存的进程是服务service
service服务管理
service 服务名start|stop restart|status
各参数含义:
- start:启动服务;
- stop:停止服务;
- restart:重启服务;
- status: 查看服务状态;
systemctl
systemctl start|stop|restart|status 服务名
查看服务的方法:/usr/lib/systemd/system
列出所有启动的服务:systemctl list-units
列出所有启动的文件:systemctl list-units-files
重新加载:systemctl reload ***
crontab服务管理
重新启动 systemctl restart crond
crontab 选项
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
| 每分钟定时执行一次 | * * * * * |
|---|---|
| 每小时定时执行一次 | 0 * * * * |
| 每天定时执行一次 | 0 0 * * * |
| 每周定时执行一次 | 0 0 * * 0 |
| 每月定时执行一次 | 0 0 1 * * |
| 每月最后一天定时执行一次 | 0 0 L * * |
| 每年定时执行一次 | 0 0 1 1 * |
- ***** 取值范围内的所有数字
- / 每过多少个数字
- - 从X到Z
- , 散列数字
nmcli
nmcli命令是redhat7或者centos7之后的命令,该命令可以完成网卡上所有的配置工作,并且可以写入配置文件,永久生效。
显示参数
show 显示详细信息
status 显示简略信息
1.查看接口信息: nmcli device status
2.查看连接信息:nmcli c show
3.启动/停止接口:nmcli c up/down ens33
P.S:建议使用 nmcli device disconnect(connect) interface-name 因为使用该命令,在启动某个连接前或发生外部事件时不会自动连接
4、创建连接
创建动态获取ip地址的连接,con-name是创建连接的名字,ifname是物理设备,网络接口
nmcli c add type eth con-name dhcp-ens33 ifname ens33
创建静态ip地址连接
nmcli c add type eth con-name dhcp-ens33 ifname ens33 ip4 192.168.86.6/24 gw4 192.168.86.6
PS:创建连接的意思,相当于在/etc/sysconfig/network-scripts/目录下创建了一个ifcfg-${con-name}文件,创建多个连接,则会同时创建多个文件。
5、修改IP地址
nmcli c mod static-ens33 ip4 192.168.86.6
修改后不会生效,需要 nmcli c up static-ens33
6、修改连接是否为自启(默认自启)
nmcli con mod static-ens33 connection.autocomect no
7、删除连接
nmcli con delete dhcp-ens33
8、配置连接的dns
为连接配置dns: nmcli con modify static-ens33 ipv4.dns 114.114.114.114
为连接添加dns: nmcli con modify static-ens33 +ipv4.dns 114.114.114.114
修改con后,需要重新激活连接方可生效
nmcli con up static-ens33
服务
yum install lrzsz -y
输入rz -E后可以直接把文件从windows拖入xshell
rz # received(接收),输入rz时、意为服务器接收文件,既将文件从本地上传到服务器。 sz # send(发送),输入sz时、意为服务器要发送文件,既从服务器发送文件到本地,或是说本地从服务器上下载文件。
php
1配置php安装源
#安装epel源 epel才有php源
yum install epel-replease -y
#搭建百度云:nginx+PHP
#(2)PHP部署
#1) 配置使用第三方扩展源安装php7.1
#1)配置PHP安装源 ###安装epel源,目的是下载php的安装源 yum install epel-release -y
#方法1: ###配置PHP安装源,目的是下载PHP软件,有可能出问题,多操作几下 wget mirror.webtatic.com/yum/el7/web… --no-check-certificate
###安装 rpm -Uvh webtatic-release.rpm #相当于配置了cat /etc/yum.repos.d/webtatic.repo
方法2: 如果无法下载webtatic-release.rpm,把群里webtatic-release.rpm工具拖到xshell下 #安装 rpm -Uvh webtatic-release.rpm
#2)安装PHP及相关插件 #2.1)卸载旧版本的php rpm -e $(rpm -qa|grep php) rpm -qa|grep php
#2.2)安装PHP及相关插件 #方法1: yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd -y yum install php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd -y yum install php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb -y
#方法2:更快 a.把老师提供的php.zip传上去。 b.unzip php.zip c.yum localinstall *.rpm -y
方法1和方法2 二选一
#3)配置php-fpm用户与Nginx的运行用户保持一致 egrep "^user|^group" /etc/php-fpm.d/www.conf sed -i '/^user/c user = nginx' /etc/php-fpm.d/www.conf sed -i '/^group/c group = nginx' /etc/php-fpm.d/www.conf egrep "^user|^group" /etc/php-fpm.d/www.conf
#4)启动php-fpm,并将其加入开机自启 systemctl start php-fpm #启动php-fpm systemctl enable php-fpm #加入开机自启 ss -lnt|grep 9000 #检查是否启动 #到此为止PHP就配好了。
#5)配置nginx连接php
#生成网盘虚拟主机配置,不要用vim编辑,直接复制粘贴。 cat >/etc/nginx/conf.d/pan.etiantian.org.conf<<'EOF' server { server_name pan.etiantian.org; listen 80; root /data/pan; index index.php index.html;
location ~ .php$ {
#root /data/pan;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
} EOF
#检查配置 cat /etc/nginx/conf.d/pan.etiantian.org.conf
#检查语法 nginx -t
#重启 pkill nginx systemctl start nginx
#检查 ss -lnt|grep 80
#6)在/data目录下创建phpinfo.php文件 #创建/data/pan目录 mkdir /data/pan -p
#写一个测试PHP的程序,测试PHP环境是否OK cat> /data/pan/phpinfo.php<<EOF EOF
#7)测试能否通过浏览器访问 curl -s -H"host:pan.etiantian.org" 127.0.0.1/phpinfo.php|grep -o license@php.net #成功标识license@php.net
#(3)部署百度网盘项目 #01.切到网盘目录 cd /data/pan
#02.把云盘程序下载下来,拖放放到linux
#03.解压 unzip kodexplorer4.40.zip
#04.授权 chown -R nginx.nginx /data/pan
#删除游戏站点配置(默认站点配置) rm -f /etc/nginx/conf.d/default.conf systemctl restart nginx
#浏览器打开输入IP即可 #注意ctrl+f5强制刷新。
#(4)做好域名解析 以管理员身份,打开记事本,然后编辑下面hosts文件 C:\Windows\System32\drivers\etc\hosts
10.0.0.5 game.etiantian.org pan.etiantian.org blog.etiantian.org
#浏览器打开输入pan.etiantian.org即可 #注意ctrl+f5强制刷新。
#正式域名去www.net.cn购买之后在域名管理平台解析对应云主机IP。
调度计划
一次性调度任务 at
[root@localhost ~]# at now +2min at> useradd uuu at> job 2 at Wed Apr 12 09:39:00 2023
循环调度执行cron
cron的概念和crontab不可分割
该命令从标准输入设备去读指令,并将存放于crontab文件中,供于之后读取执行
编写脚本文件:首先,您需要编写一个脚本文件,其中包含您希望执行的命令或任务。
打开cron表:在终端中打开cron表,可以使用以下命令打开当前用户的cron表:
crontab -e
添加计划任务:在打开的cron表中,每行都代表一个计划任务。例如,以下是一个每天晚上10点执行备份脚本的计划任务:
0 22 * * * /path/to/backup/script.sh
在这个例子中,前面的五个星号表示分钟、小时、日期、月份和星期几。星号表示该字段可以匹配任何值。在这个例子中,“0 22 * * *”表示每天晚上十点。
保存cron表:完成添加计划任务后,请按CTRL + X键,然后输入“Y”以确认您对文件的更改,并按Enter键保存cron表。
验证计划任务:可以通过运行以下命令来验证您添加的计划任务是否正在运行:
crontab -l
这将显示您当前用户的所有计划任务列表。如果您想要查看系统范围内的cron表,请输入以下命令:
sudo crontab -l
如果您的计划任务已正确设置,您应该能够在输出中看到它。
- 第一列(分钟):表示何时执行任务(0表示整点);
- 第二列(小时):表示何时执行任务(24小时制);
- 第三列(日):表示何时执行任务(1到31);
- 第四列(月):表示何时执行任务(1到12);
- 第五列(星期几):表示何时执行任务(0表示星期日,1表示星期一,以此类推);
- 最后一列:表示要运行的命令或脚本的完整路径。
日志
#tail -f /var/log/messages //动态查看日志文件的尾部
#tail /var/log/secure //认证、安全
#tail /var/log/yum.log //yum相关
#tail /var/log/maillog //跟邮件postfix相关
#tail /var/log/cron //crond,at进程产生的日志
#tail /var/log/dmesg //和系统启动相关
rsyslog配置
#重装 yum install rysyslog logrotate
#启动 systemctl status rsyslog.service
/etc/rsyslog.conf rsyslog的主配置文件
/etc/sysconfig/rsyslog rsyslog相关文件 定义级别
/etc/logrotate/syslog 和日志轮转相关
rsyslog配置规则
规则:设备+级别+文件
设备:同种应用程序,设计程序是已经制定的
级别:记录信息的类型
文件:储存信息的位置
日志轮转
轮转文件位置:主文件:/etc/logrotate.conf(决定每个日志如何轮转)子文件夹:/etc/logrotate.d/*(1:自定义配置2:方便管理)
/etc/logrotate.conf:
weekly 按周轮转,每周清理一次
// see "man logrotate" for details
//rotate log files weekly 按周轮转 每周清理一次
weekly
// keep 4 weeks worth of backlogs rotate 4 保留4份
rotate 4
//create new (empty) log files after rotating old ones
轮转后创建新文件
create
//use date as a suffix of the rotated file 使用日期作为后缀
dateext
//轮转后创建新文件
create
//this if you want your log files compressed是否压缩
#compress
//RPM packages drop log rotation information into this directory包含该目录下的子配置文件
include /etc/logrotate.d
//no packages own wtmp and btmp -- we'll rotate them here 优先级高 monthly 按月轮转 minsize最小1m轮转
轮转周期两大维度:时间和大小
create创建日志文件 0664权限 root属主 utmp属组
rotate 保留1份
// /var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
// missingok 丢失不提示 0600轮转创建后设置权限
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
notifempty 空文件不轮转
网络管理
认识网卡
网络接口规则:ethernet以太网 例如:eth0、eth1、eth2等
,eth分不清有线与无线
以太网以en开头,wlan接口以wl开头,wwan接口以ww开头命名。
下一个字符表示适配器的类型,o表示板载,s表示热拔插,p表示PCI地理位置。默认情况不适用 x用于合并MAC地址 N用于表示索引 id 端口等
防火墙
firewalld 保护互联网对服务器的影响
临时关闭:systemctl stop firewalld
永久关闭:systemctl disable firewalld
状态查看:systemctl status firewalld
selinux 保护服务器内部程序(http或ftp)对内部文件/var/www/html的访问
临时关闭:setenforce 0
永久关闭:vim /etc/sysconfig/selinux
SELINUX=disabled
source /etc/sysconfig/selinux
状态查看:getenforce(enforcing开启,permi放行,disable关闭)
配置工具
NetworkManager是网络管理器 centos7和redhat7默认开启
命令行配置 :
- vim /etc/sysconfig/network-scrtipts/ifcfg-ens33
- nmcli
图形配置:
- nmtui
- nm-connection-editor
nm:网络管理 connection:连接 editor:编辑
配置网络参数
配置IP
1:配置网卡参数
BOOT:启动 是否启用该设备
PROTOCOL:协议 获取ip方式手动none/static 自动dhcp
IPADDER=192.168.86.6 ip是互联网协议 address地址
NETMASK=255.255.255.0 子网掩码 两部分255和0 划分网络地址和主机地址 255代表网络 0代表主机
GATEWAY=192.168.86.1 网关也叫默认路由 上网的路由器地址
DNS domain:域 name:名 service:服务器
2:重启网络
systemctl restart network
3:查看ip
ip -a ifconfig 等
主机名
查看:hostname
配置:hostnamectl set-hostname wangxwexample.com
查看和配置:cat /etc/hostname 修改 vim /etc/hostname
重启生效:init 6、reboot、shutdown -r now等
网络测试
测试工具: ip a //查看所有IP (ifconfig) ping 127.0.0.1 ping回环
ip route //查看路由 查看网关 ip neigh //另一台主机ping通 查看邻居
ports and services:ss -tnl 查看端口号 netstat -tulpn查看所有被占用的端口
OSI模型
open system interconnection开放系统互联模型
iso制定 定义计算机互联的标准 设计描述计算机网络通信的框架
七层模型:
应用层--应用数据/原始数据--qq/yy
表示层--格式/压缩/加密--快苏传递/安全传递
会话层--会话/全双工/半双工--身份信息/电话/对讲机
传输层--分段/重组/端口号--传输效率
网络层--IP地址/寻址/路由--总目标,全球地址
数据链路层--MAC地址/局域网--分段地址、局部地址‘
物理层--传输介质/比特流--电流、光、无线信号、4g、5g
应表会传数物
TCP/IP
5层模型
应用层 ap du:application protocol data unit 应用协议数据单元
传输层 segment du 分段数据
网络层 packet du 包 数据
数据链路层 frame du 帧 数据 目标mac//源mac//数据//crc:
物理层 bit du 比特 数据
OSI协议只有理论没有实践
TCP/IP:传输控制协议/互联网协议----trancation control protocol / inetnet protocol
帧 数据 目标mac//源mac//数据//crc
交换机工作原理:学习//广播//转发//更新
1.学习 记录各个端口的mac地址
2.广播 寻址除源端口外向各个端口转发信息
3.单播 单一的发送
4.更新 如果一个端口300s没有使用 就会被擦除
交换机是在局域网中实现数据交换的设备,它的工作原理基于mac地址学习、寻址和转发。
当交换机接收到一份数据帧时,首先会读取该帧中的目标mac地址,并将其与交换机内部的mac地址表进行比对。如果该目标mac地址在mac地址表中已经存在,那么交换机就会根据表中记录的端口信息,将数据帧直接发送到目标设备所在的端口上;如果目标mac地址不在mac地址表中,那么交换机就会广播该数据帧到所有连接的端口上。
当目标设备接收到该数据帧后,会将其读入自己的缓存区,并产生一个回复数据帧,通过交换机返回给发送方。此时,交换机会读取回复数据帧中的源mac地址,并将其记录在mac地址表中。这样,当下次要发送数据到该设备时,交换机就可以直接查找mac地址表,并将数据转发到正确的端口上,从而避免进行广播,提高了局域网的效率和安全性。
此外,交换机还可以支持虚拟局域网(vlan)的功能,将多个不同的物理局域网划分为互相隔离、具有**逻辑的虚拟局域网。这样可以提高网络的安全性和灵活性,同时减少网络流量和冲突。
组建局域网
VLAN
(Virtual Local Area Network)虚拟局域网
vlan +数字
划分vlan :所有接口默认在vlan 1
创建划分vlan(2-1024)
1.enable 进入特权 2.config t 进入配置模式 3.vlan 10创建局域网10 vlan 20创建局域网20 4.interface fastethrnet0/1(int f0/1)--进入接口 switch access vlan10 (sw ac vl 10)--将接口加入vlan10
show vlan 查看vlan的接口配置
TRUNK
两台交换机,共分为vlan10 和vlan20 通过两条线连接,vlan10与vlan20进行信号分割,其中连接两条交换机的也需要配置vlan10与vlan20。比较浪费端口。
(TRUNK):干道 在同一条线缆上 传递多个vlan信息 就是干道打标技术
1.enable 进入特权 2.config t 进入配置模式 3.vlan 10创建局域网10。vlan 20创建局域网20 4.interface fastethrnet0/1(int f0/1)--进入接口 switch access vlan10 (sw ac vl 10)--将接口加入vlan10 5.interface 0/5 (int f0/5)进入接口 switch mode trunk 配置链路
vlan的标签只存在在trink线路上
跨越网络通讯
需要网络层(分隔广播域,寻址),需要IP地址
广播域定义了一个可以互相发送广播消息的设备集合。
网络层的核心目的就是分割广播域
路由器的作用也是分割广播域,连接不同的网络,寻址。
A类:1-126 B类:128-191 C类:192-223 D:224-239组播 E类:240-255科研 从ip的第一组开始划分 127.0.0.0 回环地址:我
子网掩码
32位二进制数字 与ip等长 IP分为网络部分和主机部分 算出IP地址的网络部分 192.168.1(网络).1(主机)
A类:255.0.0.0 B类:255.255.0.0 C类255.255.255.0
判断是否同一网络,三部曲
1,IP地址2转换
192.168.1.2
1100 0000.1010 1000.0000 0001.0000 0010
2,子网掩码2进制转换
255.255.255.0
1111 1111.1111 1111.1111 1111.0000 0000
3,IP地址和子网掩码进行逻辑运算
1100 0000.1010 1000.0000 0001.0000 0010
1111 1111.1111 1111.1111 1111.0000 0000
子网掩码1的位置 IP地址照抄
子网掩码0的位置 IP地址全为0
4,得出网络地址(这个IP输入那个网络)192.168.1.0(网络地址:代表一群地址)
同一网段,可以直接通信 总数是256个 可用的是254个 0是网络地址(192.168.1.0) 255是广播地址(192.168.1.255)
1.8通信到1.9过程:
数据包: 源地址192.168.1.8目标地址192.168.1.255(包裹着192.168.1.9)
经验之谈,第一个(192.168.1.1)最后一个(192.168.1.254)不建议用 留给路由
路由
作用:寻址和路由选路规则、转发数据包、分离广播域、安全性
IP -》 包封装 -》 路由器
目标:联通不同的网络
包封装:IP地址和数据的关系,计算发现,访问的地址是其他网段,就把这个包丢给网关(路由器)
路由器(网关)
路由:跨越从源主机到目标主机的一个互联网络来转发数据包的过程
路由器关键:路由表 1.目标网段 2.方向(接口)
路由表形成:路由器中维护的路由条目的集合 路由表根据路由表做路径选择
1.直连网段 2.非直连网段(对于非直连的网段,需要静态路由或动态路由,将网段添加到路由表中)
pc的网关就是路由器接口的ip
为路由添加静态路由:
查看路由:show ip route
进入特权:enable
进入全局:config t
配置路由:ip route 192.168.2.0 255.255.255.0(目标) f0/1(方向)
文件服务
FTP
(file transfer protocol,文件传输协议)是tcp/ip协议组中的协议之一
软件包:vsftp
端口号:控制端口:command 21/tcp 数据端口 data20/tcp
安装:yum install -y vsftpd
准备文件:touch /var/ftp/abc.txt
注:/var/ftp是ftp程序分享内容的本机目录
启动与开机自启服务:systemctl start+enable vdftpd
关闭防火墙与selinux:systemctl stop+disable firewalld
setenforce 0 vim /etc/selinux/config =disabled
安装客户端工具ftp client:
下载
- yum -y install lftp
lftp 192.168.86.10 连接服务端
get abc.txt 下载文件
mirror pub (mirror镜像)
- yum -y install wget
wget ftp://192.168.86.10/abc.txt -O /var/ftp-download(下载到指定文件夹)
wget www.baidu.com 从网页下载
wget - m ftp://192.168.86.10/dir111 下载文件夹
- Firefox
上传
- lftp 192.168.86.10 连接服务端
备份:cp /etc/vsftpd/vsftpd.conf /tmp/vsftpd.conf
anonymous_enable=YES (启用禁用匿名帐号 NO就是需要机器的账号)
anon_upload_enable=YES(开启上传文件)
anon_mkdir_write_enable=YES(开启创建目录)
mkdir /var/ftp/upload 创建上传目录
chmod 777 /var/ftp/upload 给目录权限
put 5.txt
NFS
network file system 网络文件系统,linux/unix系统之间共享文件的协议
支持多点同时挂载,以及并发写入,提供集中文件服务管理
1、安装NFS服务器
yum -y install nfs-utils
mkdir /webdata #创建web服务的文件夹 发布资源的目录
2、配置NFS服务器
echo "nfs test 2023-05-05 CLOUD" > /webdata/index.html
vim /etc/exports #nfs主配置文件
# 把webdata释放出去 192.168.86.0网段可以读写 一般为ro
/webdata 192.168.86.0/24(rw)
yum -y install nfs-utils httpd
systemctl start httpd
systemctl enable httpd
3、启动NFS服务器
1.服务
systemctl start nfs-server
systemctl enable nfs-server
exportfs -v #检查nfs系统安装
2.客户
1.安装 yum -y install nfs-utils httpd
systemctl start httpd
systemctl enable httpd
2.查询nfs服务器可用目录 showmount -e 192.168.86.10
3.手动挂载mkdir /var/www/html
mount -t nfs 192.168.86.10:/webdata /var/www/html
-t指定挂在格式:nfs 把webdata挂到html
umount /var/www/html #取消挂载
4.查看挂载 df
5使用web客户端查看服务端index.html
elinks http://192.168.**.*
NAS (network attached storage)
SSH
TENGINE
下载包:tengine.taobao.org
放入 linux系统 安装依赖文件
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
安装:
useradd www
tar xvf tengine-2.2.0.tar.gz
cd tengine-2.2.0
[root@localhost tengine-2.3.3]# ./confirgure \
> --user=www \
> --group=www \
> --prefix=/usr/local/nginx \
> --with-http_stub_status_module \
> --with-http_sub_module \
> --with-http_ssl_module \
> --with-prce
[root@localhost tengine-2.3.3]# make
[root@localhost tengine-2.3.3]# make install
[root@localhost tengine-2.3.3]# /usr/local/nginx/sbin/nginx
[root@localhost tengine-2.3.3]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 76688 root 6u IPv4 466837 0t0 TCP *:http (LISTEN)
nginx 76689 www 6u IPv4 466837 0t0 TCP *:http (LISTEN)
网站服务
网站架构:lamp linux + apache + mysql + php
静态站点:apache
软件包:httpd
服务端口:80/tcp(http) 443/tcp(https)
配置文件:/etc/httpd/conf/httpd.conf
子配置文件:/etc/httpd/conf.d/*.conf
安装:
yum -y install httpd
systemctl start httpd
systemctl status httpd
systemctl enable httpd
systemctl stop firewalld
setenforce 0
httpd -v
虚拟主机
静态站点
VirtualHost(一台机器运行多个网站)
基于主机名,实现两个网站的架设
网站域名 网站资源存放目录
www.a.org /var/www/html/a.org
www.b.org /var/www/html/b.org
准备网站源码目录
A站点
mkdir /var/www/html/a.org
vim /var/www/html/a.org/index.html
创建a.org的网站配置文件
vim /etc/httpd/conf.d/a.org.conf
<VirtualHost *:80>
ServerName www.a.org
DocumentRoot /var/www/html/a.org
B站点
mkdir /b.org
vim /b.org/index.html
vim /etc/httpd/conf.d/b.org.conf
<VirtualHost *:80>
ServerName www.b.org
DocumentRoot /b.org
<Directory "/b.org">
Require all granted #放在/var/www/html之外的 都需要授权
域名服务
1、hosts:可以实现域名解析,平面式结构,不便于查询更新。
2、DNS:Domain Name System 域名系统,分布式,层次性。 实现将主机名解析为IP。
3、FQDN:fully qualified domain name 完全合格域名
主机名.二级域.顶级域.
公有云购买域名与捆绑