Linux
1.Linux操作系统根目录文件夹作用
目录 | 说明 | 备注 |
---|---|---|
bin | 存放普通用户可执行的指令 | 即使在单用户模式下也能够执行处理 |
boot | 开机引导目录 | 包括Linux内核文件与开机所需要的文件 |
dev | 设备目录 | 所有的硬件设备及周边均防止在这个设备目录中 |
etc | 各种配置文件目录 | 大部分配置属性均存放在这里 |
lib/lib64 | 开机时常用的动态链接库 | bin及sbin指令也会调用对应的lib库 |
media | 可以出设备挂载目录 | 类似软盘,U盘,光盘等临时挂载目录 |
mnt | 用户临时挂载其他的文件系统 | 额外的设备可挂载在这里,相对临时而言 |
opt | 第三方软件安装目录 | 现在习惯性的放置在/usr/local中 |
proc | 虚拟文件系统 | 通常是内存中的映射,特别注意在误删除数据文件后,比如DB,只要系统不重启,还是有很大几率能将数据找回来 |
root | 系统管理员主目录 | 除root之外,其他用户均放置在/home目录下 |
run | 系统运行时所需文件 | 以前防止在/var/run中,后来拆分成独立的/run目录,重启后重新生成对应的目录数据 |
sbin | 只有root才能运行的管理指令 | 跟bin类似,但只属于root管理员 |
srv | 服务启动后需要访问的数据目录 | |
tmp | 存放临时文件目录 | 所有用户对该目录均可读写 |
sys | 跟proc一样虚拟文件系统 | 记录核心系统硬件信息 |
usr | 应用程序放置目录 | |
var | 存放系统执行过程经常改变的文件 |
- 在Linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件
- /etc:上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动
- /bin,/sbin,/usr/bin,/usr/sbin: 这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls目录下的
- 值得提出的是,/bin,/usr/bin是给系统用户使用的指令(除root外的同用户),而/sbin,/usr/sbin则是给root使用的指令
- /var: 这是一个非常重要的目录,系统上跑了很多的程序,那么每个程序都会有相应的日志产生,而这些文件就被记录到这个目录下,具体在/var/log目录下,另外mail的预设放置也是在这里
- 如何分辨Linux系统文件类型
- 蓝色 ——–目录
- 黑色 ——–普通文件
- 浅蓝色 ——符号链接
- 黑底黄字 —-设备文件 硬盘sda
- 绿色 ——-带有执行权限的文件
- 红色 ——-压缩包
- 紫色 ——-图片 模块文件
2. 快捷键的应用
1. Tab键功能,命令和已存在的文件名称补齐的作用
2. 清除屏幕内容 Ctrl+l
3. 终止快捷键 Ctrl+c
3. 基本命令信息
ls | cd | pwd | mkdir |
---|---|---|---|
touch | rm | rmdir | cp |
cat | more | less | head |
linux 命令字格式
命令字 [选项] [文件或目录]
命令有哪些选项?
如何查看一个命令字的帮助手册
man 命令字
内部命令: 命令解释器自带的命令 help cd
外部命令: 安装的第三方软件带的命令字 基本都有帮助手册
ls命令
ls:
-a 显示隐藏文件
-l 显示文件的详细信息
-r 将文件以相反次序显示(原定依英文字母次序)
-h 增强对文件大小易读性,以人类可读的形式显示文件大小
-R 递归显示目录中子目录的内容 -d 只查看当前目录下的目录文件
cd命令
cd | 功能 |
---|---|
~ | 回到home目录 |
- | 跳到上次所在目录 |
.. | 跳到父目录 |
../.. | 跳到当前目录的上两层 |
pwd命令
作用: 可立刻得知目前所在的工作目录的绝对路径名称
语法: pwd [–help] [–version]
mkdir命令
作用: 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录
语法: mkdir [选项] 目录
命令功能: 通过mkdir命令可以实现在指定位置创建以DirName(指定的文件名)命名的文件夹或目录.要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限.并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)
命令参数
选项参数 完整参数 功能描述 -m –mode=模式 设定权限<模式>(chmod),而不是rwxrwxrwx -p –parents 可以是一个路径名称
此时若路径中的某些目录尚不存在,加上此选项后,
系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录-v –verbose
–help
–version–verbose每次创建新目录都显示信息
–help显示此帮助信息并退出
–version 输出版本信息并退出
rm命令
作用: 用于删除一个文件或者目录
语法: rm[选项] 文件
命令参数
参数 参数描述 -i 删除前逐一询问确认 -f 强制删除。忽略不存在的文件,不提示确认 -r 将目录及一下的文档逐一删除(递归删除)
rmdir命令
作用: 用于删除空的目录.从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限
语法: rmdir [-p] dirName
命令参数
参数 参数描述 -p 当子目录被删除后使它也称为空目录的话,便顺便一并删除 注意: 不能删除非空目录
mv命令
作用: 用来为文件或目录改名,或将文件或目录移入其它位置
语法: mv [options] source dest
mv [options] source… directory
命令参数:
参数 参数描述 -i 若指定目录已有同名文件,则先询问是否覆盖旧文件; -f 在mv操作要覆盖某已有的目标文件时不给任何提示 mv参数设置与运行结果
命令格式 运行结果 mv 文件名 文件名 将原文件名改为目标文件名 mv 文件名 目录名 将文件移动到目标目录 mv 目录名 目录名 目标目录已存在,将原目录移动到目标目录;目标目录不存在则改名 mv 目录名 文件名 出错
cp命令
作用: 用于复制文件或目录
语法: cp [options] source dest
cp [options] source… directory
命令参数
参数 参数功能描述 -a 此选项通常在复制目录时使用,它保留链接,文件属性,并复制目录下的所有内容.其作用等于dpr参数组合 -d 复制时保留链接.这里所说的链接相当于Windows系统中的快捷方式 -f 覆盖已经存在的目录文件而不给出提示 -i 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时 -p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中 -r 若给出的源文件是一个目录文件,此时将复制该目录下的所有子目录和文件 -l 不复制文件,只是生成链接文件 #常用的有以下参数
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与源文件时间一样
cat命令
作用: 用于连接文件并打印到标准输出设备上
语法: cat [-AbeEnstTuv] [–help] [–version] fileName
命令参数:
-n –number 由1开始对所有输出的行数编号 -b -number-nonblank 和-n相似,只不过对于空白行不编号 -s –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 -v –show-nonprinting 使用^和M-符号,除LFD和TAB之外 -E –show-ends 在每行结束处显示$ -T –show-tabs 将TAB字符显示为^| -A –show-all 等价于-vET -e 等价于”-vE”选项 -t 等价于”-vT’选项
more命令
作用: 类似于cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白页(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能(与vi相似),使用中的说明文件,请按h
语法: more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
命令参数
参数 参数功能描述 -num 一次显示的行数 -d 提示使用者,在下放显示[Press space to continue,’q’ to quit.]
如果使用者按错键,则会显示[Press ‘h’ for instructions.]而不是’哔’声-l 取消遇见特殊字元^L(送纸字元)时会暂停的功能 -f 计算行数时,以实际上的行数 -p 不以卷动的方式显示每一页,而是先清除荧幕后再显示内容 -c 跟-p 相似,不同的是先显示内容再清除其他旧资料 -s 当遇到有连续两行以上的空白行,就代换为一行的空白行 -u 不显示下引号(根据环境变数TERM指定的terminal而有所不同) +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字符串之后开始显示 +num 从第num行开始显示 fileNames 需要显示内容的文档,可为复数个数
常用的操作命令
按键 按键功能描述 Enter 向下n行,需要定义.默认为1行 Ctrl+F 向下滚动一屏 空格键 向下滚动一屏 Ctrl+B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号 V 调用vi编辑器 !命令 调用Shell,并执行命令 q 退出more
less命令
作用: less与more类似,但是用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件.
语法: less [参数] 文件
命令参数
参数 参数功能描述 -i 忽略搜索时的大小写 -N 显示每行的行号 -o <文件名> 将less输出的内容在指定文件中保存起来 -s 显示连续空行为一行 /字符串: 向下搜索”字符串”的功能 ?字符串: 向下搜索”字符串”的功能 n 重复前一个搜索(与/或?有关) N 反向重复前一个搜索(与/或?有关) -x<数字> 将”tab”键显示为规定的数字空格 b 向后翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一行 回车键 滚动一页 [pagedown] 向下翻动一页 [pageup] 向上翻动一页
head命令
作用: 用于查看文件的开头部分的内容,有一个常用的参数-n用于显示行数,默认为10,即显示10行的内容
语法: head [参数] [文件]
命令参数
参数 参数描述 -q 隐藏文件名 -v 显示文件名 -c<数目> 显示的字节数 -n<行数> 显示的行数
扩展:tail 命令,文件的末尾开始查看文件
4. 查找文件命令
在Linux要查找某个命令或者文件,但是不知道放在哪里了,可以使用下面的一些命令来搜索
命令 | 作用 |
---|---|
which | 查看可执行文件的位置 |
whereis | 查看文件的位置 |
locate | 配合数据库查看文件的位置 |
find | 实际搜寻硬盘查询文件名称 |
which命令
作用:用于查找文件(which指令会在环境变量$PATH设置的目录里查找符合条件的文件.)
语法: which[文件…]
命令参数
参数 参数描述 -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径 -w 指定输出时栏位的宽度 -v 显示版本信息
whereis命令
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b),man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息
whereis及locate都是基于系统内建的数据库进行搜搜,因此效率很高,
而find则是遍历硬盘查找文件
作用: 用于查找文件
语法: whereis [-bfmsu] [-B<目录>…] [-M<目录>…] [-S<目录>…] [文件…]
命令参数:
参数 参数描述 -b 定位可执行文件 -B<目录> 只在设置的目录下查找可执行文件 -f 不显示文件名前的路径名称 -m 定位帮助文件 -M<目录> 只在设置的目录下查找帮助文件 -s 定位源代码文件 -S<目录> 只在设置的目录下查找源代码文件 -u 搜索默认路径下除可执行文件,源代码文件,帮助文件以外的其他文件
locate命令
需要注意这个命令在系统里面默认是没有安装的
安装命令: yum install mlocate
updatedb
作用: 用于查找符合条件的文档,它会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录
语法: locate [-d] [–help] [–version] [范本样式…]
命令参数:
参数 参数描述 -b 仅匹配路径名的基本名称 -c 只输出找到的数量 -d 使用DBPATH指定的数据库,而不是默认数据库/var/lib/mlocate/mlocate.db -e 仅打印当前先有文件的条目 -1 如果是1. 则启动安全模式.在安全模式下,使用者不会看到权限无法看到的档案.
这会使速度减慢,因为locate必须至实际的档案系统中取得档案的权限资料-0 在输出上带有NUL的单独条目 -S 不搜索条目,打印有关每个数据库的统计信息 -q 安静模式,不会显示任何错误讯息 -P 检查文件存在时不要遵循尾随的符号链接 -l 将输出(或计数)限制为LIMIT个条目 -n 之多显示n个输出 -m 被忽略,为了向后兼容 -r REGEXP – 使用基本正则表达式 –regex 使用扩展正则表达式 -o 指定资料库存的名称 -h 显示帮助 -i 忽略大小写 -V 显示版本信息 常用参数:
参数 参数描述 -l num(要显示的行数) -f 将特定的档案系统排除在外,如将proc排除在外 -r 使用正则运算式做为寻找条件
find命令
作用: 用于在文件树种查找文件,并作出相应的处理
语法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression]
命令参数
参数 参数描述 -pathname find命令所查找的目录路径,例如用.来表示当前目录,用/来表示系统根目录 -print find命令将匹配的文件输出到标准输出 -exec find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为’command’{ } ;,注意{ }和;之间的空格 -ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
命令选项
选项 选项描述 -name 按照文件名查找文件 -perm 按文件权限查找文件 -user 按文件属主查找文件 -group 按照文件所属的组来查找文件 -type 查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件- size n:[c] 查找文件长度为n块文件,带有c时表文件字节大小 - amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后N分钟被改变文件状态的文件 -ctime n 查找系统中最后n*24小时被改变文件状态的文件 -mmin n 查找系统中最后N分钟被改变文件数据的文件 -mtime n 查找系统中最后n*24小时被改变文件数据的文件 -maxdepthn 最大 查找文件深度 -prune 选项来指出需要忽略的目录.在使用-prune选项时要当心
因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用newer选项
5. 权限相关命令
chmod命令
Linux/Unix的文件调用权限分为三级:文件拥有者,群组,其他.
用于改变linux系统文件或目录的访问权限,用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法.
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读写和执行权限;与属主同组的用户的读写和执行权限;系统中其他用户的读写和执行权限.可使用ls -l test.txt查找
语法: chmod [-cfvR ] [–help] [–version] mode file…
常用参数:
参数 参数描述 -c 当发生改变时,报告处理信息 -R 处理指定目录以及其子目录下所有文件 权限范围 u 目录或者文件的当前用户 g 目录或者文件的当前的群组 o 除了目录或者文件的当前用户或群组之外的用户或者群组 a 所有的用户及群组 代号 代号权限 r 读权限,用数字4表示 w 写权限,用数字2表示 x 执行权限,用数字1表示 - 删除权限,用数字0表示 s 特殊权限
chown命令
chown将指定文件的拥有者改为指定的用户或组,
用户可以是用户名或者用户ID;
组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符
注意: 一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者设置为别人,只有系统管理员(root)才有这样的权限.
语法: chown [-cfhvR] [–help] [–version] user[:group] file…
常用参数
参数 参数描述 user 新的文件拥有者的使用者ID group 新的文件拥有者的使用者组(group) -c 显示更改的部分的信息 -f 忽略错误信息 -h 修复符号链接 -v 显示详细的处理信息 -R 处理指定目录以及其子目录下所有文件 –help 显示辅助说明
6. 压缩和解压缩相关命令
tar命令
用来压缩和解压缩文件. tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其他的功能来完成.
弄清两个概念:打包和压缩.打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件
作用: 用于备份文件(tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件)
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
命令参数
-
参数 参数描述 -c 建立新的压缩文件 -f 指定压缩文件 -r 添加文件到已经压缩文件包中 -u 添加改了和现有的文件到压缩包中 -x 从压缩包中抽取文件 -t 显示压缩文件中的内容 -z 支持gzip压缩 -j 支持bzip2压缩 -Z 支持compress解压文件 -v 显示操作过程 - (1)将test.log test.sh全部打包成 tar 包
[root@localhost ~]# [root@localhost ~]# tar -cvf log.tar test.log test.sh test.log test.sh
(2)将 /etc 下的所有文件及目录打包到指定目录或当前目录,并使用 gz 压缩
[root@localhost ~]# tar -zcvf ./etc.tar.gz /etc
(3)查看刚打包的文件内容(一定加z,因为是使用 gzip 压缩的)
[root@localhost ~]# tar -ztvf ./etc.tar.gz ...省略...
(4)要压缩打包 /home, /etc ,但不要 /home/mashibing ,只能针对文件,不能针对目录
[root@localhost ~]# tar --exclude /home/mshibing -zcvf myfile.tar.gz /home/* /etc
/tmp 目录中建立一个大小为100m的文件bigfile
dd if=/dev/zero of=/tmp/bigfile bs=1M count=100
inputfile 输入文件
outputfile 输出文件
bs 单位
count 计数器
gzip 文件名称 ----- 压缩文件
gunzip 压缩包 ------解压缩
bzip2 文件名称 -------压缩
bunzip2 压缩包--------解压缩
如何对目录进行打包压缩
tar -zcf /tmp/allfile.tar /tmp/allfile 压缩
-z指定用gz解压/压缩方式
-c create
tar -xf /tmp/allfile.tar -C /root
-x 解包
-C指定解压路径
-j 指定用bzip2方式解压/压缩
7.时间相关命令
date命令
作用: 用来显示或设定系统的日期与时间
语法: date [-u] [-d datestr] [-s datestr] [–utc] [–universal] [–date=datestr] [–set=datestr] [–help] [–version] [+FORMAT] [MMDDhhmm[[CC]YY] [.ss]]
时间参数
参数 参数描述 % 印出 % %n 下一行 %t 跳格 %H 小时(00..23) %I 小时(01..12) %k 小时(0..23) %M 分钟(00..59) %p 显示本地 AM 或 PM %r 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) %s 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S 秒(00..61) %T 直接显示时间 (24 小时制) %X 相当于 %H:%M:%S %Z 显示时区
日期参数
-
参数 参数描述 %a 星期几 (Sun..Sat) %A 星期几 (Sunday..Saturday) %b 月份 (Jan..Dec) %B 月份 (January..December) %c 直接显示日期与时间 %d 日 (01..31) %D 直接显示日期 (mm/dd/yy) %h 同 %b %j 一年中的第几天 (001..366) %m 月份 (01..12) %U 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形) %w 一周中的第几天 (0..6) %W 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形) %x 直接显示日期 (mm/dd/yy) %y 年份的最后两位数字 (00.99) %Y 完整年份 (0000..9999)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY] [.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。
使用权限:所有使用者。
当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date ‘+%-H:%-M:%-S’ 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
语法:
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
参数 | 参数描述 |
---|---|
-d | 显示 datestr 中所设定的时间 (非系统时间) |
–help | 显示辅助讯息 |
-s | 将系统时间设为 datestr 中所设定的时间 |
-u | 显示目前的格林威治时间 |
–version | 显示版本编号 |
cal命令
作用:用户显示公历(阳历) 日历
语法: cal [选项] [[[日]]] 月]年 ]
参数 | 参数描述 |
---|---|
-1 | 只显示当前月份(默认) |
-3 | 显示上个月,当月和下个月 |
-s | 周日作为一周第一天 |
-m | 周一作为一周第一天 |
-j | 显示在当年中的第几天(儒略日) |
-y | 输出整年 |
-V | 显示版本信息并退出 |
-h | 显示此帮助并退出 |
示例
1. 显示指定年月日期
[root@localhost ~]# cal 9 2020
2. 显示2020年每个月日历
[root@localhost ~]# cal -y 2020
3. 将星期一做为第一列,显示前中后三月
[root@localhost ~]# cal -3m
8. 全局正则表达式搜索
grep命令
强大的文本搜索命令,grep(Global Regular Expression Print)全局正则表达式搜索
grep的工作方式是这样的,它在一个或者多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看做文件名.搜索的结果被送到标准输出,不影响源文件内容
作用: 用于查找文件里符合条件的字符串
注意: 如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来.若不指定任何文件名称,或是所给予的文件名为**-**,则grep指令会从标准输入设备读取数据
语法: grep [option] pattern file|dir
常用参数:
参数 参数描述 -A n 显示匹配字符后n行 -B n 显示匹配字符前n行 -C n 显示匹配字符前后n行 -c 计算符合样式的列数 -i 忽略大小写 -l 只列出文件内容符合指定的样式的文件名称 -f 从文件中读取关键词 -n 显示匹配内容的所在文件中行数 -R 递归查找文件夹 grep的规则表达式
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 $ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 * #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .* #一起用代表任意字符。 [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 \(..\) #标记匹配字符,如'\(love\)',love被标记为1。 \< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。 \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。 \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b #单词锁定符,如: '\bgrep\b'只匹配grep。
9. 系统进程相关命令
ps
作用: 用于显示当前进程(process) 的状态
语法: ps [options] [–help]
常用命令: ps -aux
Linux上进程的5种状态
- 运行(正在运行或在运行队列中等待
- 中断(休眠中,受阻,在等待某个条件的形成或接收到信号)
- 不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
- 僵死(进程已终止,但进程描述符存在,知道父进程调用wait4()系统调用后释放)
- 停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行)
ps工具标识进程的5种状态码
状态码 状态 含义 D—–uninterruptible sleep(usually IO) 不可中断 收到信号不唤醒和不可运行,进程必须等待直到有中断发生 S—–sleeping 中断 休眠中,受阻,在等待某个条件的形成或接受到信号 R—–runnable(on run queue) 运行 正在运行或在运行队列中等待 T—–traced or stopped 停止 进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行 Z—–a defunct (“zombie”) process 僵死 进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放
命令参数
参数 参数描述 -A 显示所有进程 a 显示所有进程 -a 显示同一终端下所有进程 c 显示进程真实名称 e 显示环境变量 f 显示进程间的关系 r 显示当前终端运行的进程 -aux 显示所有包含其他使用的进程 (1)显示当前所有进程环境变量及进程间关系
[root@localhost ~]# ps -ef
(2)显示当前所有进程
[root@localhost ~]# ps -A
(3)与grep联用查找某进程
[root@localhost ~]# ps -aux | grep apache root 20112 0.0 0.0 112824 980 pts/0 S+ 15:30 0:00 grep --color=auto apache
(4)找出与 cron 与 syslog 这两个服务有关的 PID 号码
[root@localhost ~]# ps aux | grep '(cron|syslog)' root 20454 0.0 0.0 112824 984 pts/0 S+ 15:30 0:00 grep --color=auto (cron|syslog)
kill命令
作用:kill命令用于删除执行中的程序或工作
语法: kill [-s <信息名称或编号>] [程序] 或 kill [-l <信息编号>]
常用参数:
参数 参数描述 -l 信号,如果不加信号的编号参数,则使用”-l”参数列出全部的信号名称 -a 当处理当前进程时,不限制命令名和进程号的对应关系 -p 指定kill命令只打印相关进程的进程号,而不发送任何信号 -s 指定发送信号 -u 指定用户 先使用ps查找进程pro1,然后用kill命令杀掉
[root@localhost ~]# kill -9 $(ps -ef | grep pro1) -bash: kill: root: 参数必须是进程或任务 ID -bash: kill: (27319) - 没有那个进程 -bash: kill: (27317) - 没有那个进程
10. vi编辑器 vim 升级版
vi与vim的简介
在Linux下,绝大部分的配置文件都是以ASCII码的纯文本形式存在的,可以利用一些简单的编辑软件修改配置。
在Linux命令行界面下的文本编辑器有很多,比如nano,Emacs,vim等。但是所有的UNIX Like系统都会内置vi文本编辑器,而其他的文本编辑器则不一定存在。很多软件的编辑接口都会主动调用vi,而且它的编辑速度相当快。因为有太多的Linux命令都默认使用vi座位数据编辑的接口,所以我们必须学会vi,否则很多的命令无法操作。
vim可以视为vi的高级版本,vim可以用颜色或者底线等方式显示一些特殊的信息。vim可以根据文件的扩展名或者是文件内的开头信息判断该文件的内容而自动调用该程序的语法判断式。
概括的说:vi是文字处理器,而vim是它的升级版本,是一个程序开发工具。vim加入了许多额外的功能,例如支持正则表达式的查找架构,多文件编辑器,块复制等。
- vim不是系统默认安装的软件,需要输入命令安装: yum install vim
- 基本上vi/vim共分为三种模式
- 命令模式(Command mode)
- 输入模式(Insert mode)
- 末行命令模式(Last line mode)
- 一般使用VI操作直接进入的模式,即默认模式。在此模式下可以进行的操作:移动光标、复制、粘贴、删除操作。
命令模式
用户刚刚启动vi/vim,便进入了命令模式.
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符.
x 删除当前光标所在处的字符
shift+ : 切换到末行命令模式,以在最底一行输入命令
任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。
(注意:若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。)
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! | |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n |
那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
n |
n 为数字。光标向下移动 n 行(常用) |
搜索替换 | |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! |
删除、复制与粘贴 | |
---|---|
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] |
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦! | |
. | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) |
输入模式
在命令模式下按下i就进入了输入模式.
在命令模式下输入插入命令i,附加命令啊,打开命令o,修改命令c,取代命令r或替换命令s都可以进入文本输入模式.在该模式下,用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上.在文本输入过程中,若想回到命令模式下,按键ESC即可
进入输入或取代的编辑模式 | |
---|---|
i, I | 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用) |
a, A | 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用) |
r, R | 进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
上面这些按键中,在 vi 画面的左下角处会出现『–INSERT–』或『–REPLACE–』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔! | |
[Esc] | 退出编辑模式,回到一般模式中(常用) |
末行模式
末行模式也称ex转义模式.在命令模式下,用户按”:”键即可进入末行模式下,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个”:”作为末行模式的提示符,等待用户输入命令.多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等).末行命令执行完后,vi自动回到命令模式,例如:
:sp newfile
则是分出一个窗口编辑newfile文件.如果要从命令模式转换到编辑模式,可以键入命令a或者i;
如果需要从文本模式返回,则按ESC键即可.在命令模式下输入”:”即可切换到末行模式,然后输入命令.
指令行的储存、离开等指令 | |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ | |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
ZZ | 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) |
ZQ | 不保存,强制退出。效果等同于 **:q!**。 |
:w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
:r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
:n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! |
:n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用) |
:1,$s/word1/word2/g 或 :%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) |
vim 环境的变更 | |
---|---|
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与 set nu 相反,为取消行号! |
普通用户:默认自动使用vim替换了vi |
vim 中批量添加注释
方法一 :块选择模式
批量注释:
- Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
取消注释:
- Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。
方法二: 替换命令
批量注释:
使用下面命令在指定的行首添加注释。
使用名命令格式: :起始行号,结束行号s/^/注释符/g(注意冒号)。
取消注释:
- 使用名命令格式: :起始行号,结束行号s/^注释符//g(注意冒号)。
例子:
1、在 10 - 20 行添加 // 注释
:10,20s#^#//#g
2、在 10 - 20 行删除 // 注释
:10,20s#^//##g
3、在 10 - 20 行添加 # 注释
:10,20s/^/#/g
4、在 10 - 20 行删除 # 注释
:10,20s/#//g
11. Linux操作系统的软件安装
rpm安装
RPM(RedHat Package Manager)安装管理
这个机制最早是由Red Hat开发出来,后来实在很好用,因此很多 distributions(发行版)就使用这个机制来作为软件安装的管理方式 。包括Fedora,CentOS,SuSE等等知名的开发商。
RPM的优点
- RPM内含已经编译过的程序与配置文件等数据,可以让用户免除重 新编译的困扰
- RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可 避免文件被错误安装
- RPM文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件
- RPM管理的方式使用数据库记录 RPM 文件的相关参数,便于升级 、移除、查询与验证
RPM的缺点:
1、rpm在安装的时候不能指定安装路径。安装路径是在制作RPM包的时候已经指定了。
2、rpm软件包一般都存在依赖问题没有解决。
yum源安装
yum是一个在Fedora和RedHat以及SUSE中的Shell前段软件包管理器
RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记
语法:
yum [options] [command] [package ...]
常用参数:
参数 | 参数描述 |
---|---|
options | 可选,选项包括-h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等 |
command | 要进行的操作 |
package | 操作的对象 |
常用命令:
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
12. 系统用户分类
Linux操作系统中的用户分类
- 普通用户 比管理员低,也可以登录系统
- 超级管理员 root
用户的分类和组
/etc/passwd———保存了操作系统中所有用户的信息
root : x : 0 : 0 : root : /root : /bin/bash zoe : x : 500 : 500 : : /home/zoe : /bin/bash 字段1: 用户名 字段2: 密码占位符 字段3: 用户的uid: 0表示超级用户 500-60000普通用户, 1-499程序用户 字段4: 基本组的gid 先有组才有用户 字段5: 用户信息记录字段 字段6: 用户的家目录 字段7: 用户登录系统后使用的命令解释器
/etc/shadow———保存了用户密码信息
root:$aoaenuivi28hnncau3/:18085:0:99999:7::: 字段1: 用户名 字段2: 用户的密码加密后的字符串 字符3: 距离1970/1/1密码最近一次的修改时间 字段4: 密码的最短有效期 字段5: 密码的最长有效期 字段6: 密码过期前7天警告 字段7: 密码的不活跃期 字段8: 用户的实效时间
/etc/group————记录了系统中所有组的信息
13. 建立及调整用户的属性
建立一个名为class1的组组id为1000,class2的组id2000
groupadd class1 groupmod -g 1000 class1 //对更改用户组id groupadd -g 2000 class2 //直接建立一个组id为2000的组
建立tom用户要求其基本组是class1组,附加组为class2组,tom用户的uid为600
useradd -u 600 -g 1000 -G 2000 tom usermod
建立一个程序用户uid为250用户名为testuser没有家目录,不能登录
useradd -u 250 -M -s /sbin/nologin testuser -M 指定用户没有家目录 -s /sbin/nologin 指定登录运行程序
为tom用户设定密码为123,并设定密码最长有效期为90天,将用户进行锁定使其无法登录系统
passwd tom //修改密码 groupmod -M 90 //设定密码有效期 passwd -l tom //锁定tom用户 passwd -u tom //解锁tom用户 passwd -S tom //查看tom密码状态
删除tom用户和testuser用户,删除class1组和2组
userdel -r testuser userdel -r tom groupdel class1 groupdel class2
14. 网络信息查看与配置
确认系统的网卡信息和ip地址
1.确认系统的网卡信息和ip地址
ip addr
enthernet 0表示第一个网卡 1表示第二个网卡
eth0
eth1
关闭networkmanager服务
service NetworkManager stop
chkconfig --level 345 NetworkManager off
DNS配置文件
查看dns配置文件
[root@localhost yum.repos.d]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.0.1
nameserver
这一项,设置的是域名服务器的地址,多个域名服务器,则在后续添加空格继续补充域名服务器的地址,或者另起一行做类似的nameserver
配置
ip addr add 192.168.0.100/24 dev eth0
ip addr rel 192.168.0.100/24 dev eth0
ip route add default via 192.168.86.1 dev eth0 /#配置默认网关
vim /etc/resolv.conf #dns解析文件
添加------nameserver *dns服务器地址*
查看或修改centos网卡信息
[root@localhost yum.repos.d]# cat vi /etc/sysconfig/network-scripts/ifcfg-ens33
cat: vi: 没有那个文件或目录
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=fe07c6dd-8437-474f-8c72-37f5555d754e
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.0.150
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
配置 | 说明 |
---|---|
DEVICE=eth0 |
网卡设备名,eth0表示第一张网卡 |
BOOTPROTO=none |
是否自动获取IP(none、static、dhcp),当值为dhcp时,只需配置上述例子中的那几项就可以联网 |
HWADDR=00:0C:29:11:30:39 |
MAC地址 |
NM_CONTROLLED=yes |
是否可以由Network Manager图形管理工具托管 |
ONBOOT=yes |
是否随网络服务启动当前网卡生效(在CentOS 6 以上的版本中ONBOOT是默认关闭的。) |
TYPE=Ethernet |
网络类型,这里为以太网 |
UUID=5ab36190-a5df-4bf1-94d8-6c126afd05f1 |
唯一识别码 |
IPADDR=192.168.0.200 |
IP地址 |
NETMASK=255.255.255.0 |
子网掩码 |
GATEWAY=192.168.0.1 |
网关 |
DNS1=202.106.0.20 |
DNS |
IPV6INIT=no |
IPv6是否启用,这里设置为不启用 |
USERCTL=no |
是否允许非root用户控制此网卡,这里为不允许 |
说明: 1.自动获取IP的条件是:必须在局域网内存在DHCP服务器。 2.相同UUID网络配置的计算机会导致互相不能上网。
15. 日志管理与应急分析
日志文件 /var
日志分类
vim /etc/rsyslog.conf //日志服务配置文件 vim /var/log/messages //系统信息日志 vim /var/log/secure //登录信息日志 vim /var/log/maillog //邮件信息日志
- 系统日志
- 登录日志
- 程序日志
16. 日志的异地备份,日志服务器建立
清除登录日志信息
echo "" /var/log/secure
日志配置信息
- 客户机端
vim /etc/rsyslog.conf #*.* @@remote-host:514 authpriv.* @@&ip&:514 @@ 表示使用tcp协议发送 $ip$:日志服务器地址 setenforce 0 //设置关闭SElinux防火墙 getenforce //查看selinux防火墙状态 Permissive service rsyslog restart //重启服务配置
- 服务器端
vim /etc/rsyslog.conf $ModLoad imtcp //解除注释 $InputTCPServerRun 514 //解除注释 :fromhost-ip,isequal,"客户端IP地址" /var/log/client/&ip&.log //接收日志,按照ip地址接收,存放备份日志的地址 service rsyslog restart //重启服务配置 ss -antpl | grep 514 //监听514端口,查看端口是否打开正常
17. apache配置
web服务 : http
lamp平台: Linux apache mysql php
发帖留言-提交-php把你的发言提交数据库中 php登录数据调用调用你所有的留言,讲你的留言生产html语句显示到主页上 1. 启动服务 service httpd start 2. 验证 ss -antpl|grep 80 3. 主页建立 主页默认路径 /var/www/html vim /var/www/html/index.html 4. 主配置文件分析 vim /etc/httpd/conf/http
18. Nginx服务的建立
lamp:
- a: apache
- m: mysql
lnmp:
- n: nginx
- m: mysql
什么是什么是lnmp
- linux nginx MySQL PHP/per/python
- 继Apache之后的另一款在Linux下被大量使用的web服务软甲
- ngnix的优势在于,稳定性和低系统资源损耗,并发连接的高处理能力
- 一台物理服务器可处理30000-50000个并发请求
```
编译安装之前确保已存在开发环境软件包
yum -y install pcre-devel zlib-devel
创建运行用户和组
useradd -M -s /sbin/nologin nginx
编译安装
tar zxf nginx-1.6.0.tar.gz
./configure –prefix=/usr/local/nginx –user=nginx –group=nginx
make && make install## 19. 包过滤规则 1. 包过滤防火墙 1. iptables工具 -4个功能(表) 1. raw 2. mangle 3. nat 网络地址转换 4. filter 过滤
iptables -t filter -nvL 每个表都有专门写规则的地方(链) INPUT 入站 FORWARD 转发规则链(当源地址以及目标地址) OUTPUT 出站
2. iptables的基本语法 - 语法构成 - iptables [-t 表名] 选项 [链名] [条件] [-j控制类型] - 几个注意事项 - 不指定表名时,默认指filter表 - 不指定链名时,默认指表内的所有链 - 除非设置链的默认策略,否则必须指定匹配条件 - 选项,链名,控制类型使用大写字母,其余均为小写 - 数据包的常见控制类型 - ACCEPT:允许通过 - DROP:直接丢弃,不给出任何回应 - REJECT:拒绝通过,必要时会给出提示 - LOG:记录日志信息,然后传给下一条规则继续匹配 3. iptables的管理选项 - 添加新的规则 - -A: 在链的末尾追加一条规则 - -I: 在链的开头(或指定序号)插入一条规则 - -L: 列出所有规则条目 - -n: 以数字形式显示地址,端口等信息 - -v: 以更详细的方式显示规则信息 - --line-numbers: 查看规则时,显示规则的序号 - 删除,清空规则 - -D:删除链内指定序号(或内容)的一条规则 - -F: 清空所有规则 - 设置默认策略 - -P: 为指定的链设置默认规则 4. 规则的匹配条件 - 通用匹配 - 可直接使用,不依赖于其他条件或扩展 - 包括网络协议,IP地址,网络接口等条件 - 隐含匹配 - 要求以特定的协议匹配作为前提 - 包括端口,TCP标记,ICMP类型等条件 - 显式匹配 - 要求以"-m扩展模块"的形式明确指出类型 - 包括多端口,Mac地址,IP范围,数据包状态等条件 - 常见的通用匹配条件 - 协议匹配: -p协议名 - 地址匹配: -s源地址,-d目的地址 - 接口匹配: -i入站网卡,-o出站网卡 - 常用的隐含匹配条件 - 端口匹配: --sport源端口,--dport目的端口 - TCP标记匹配:--tcp-flags检查范围,被设置的标记 - ICMP类型匹配: --icmp-type ICMP类型 - 常用的显式匹配条件 - 多端口匹配: -m multiport --sport源端口列表 - -m multiport --dport 目的端口列表 - IP范围匹配: -m iprange --src-range IP 范围 - Mac地址匹配: -m mac --mac-source Mac地址 ## 20. 脚本编写
//通过Linux脚本编写修改ip地址以及网关子网掩码
#!/bin/bash
read -p “please input ipaddr:”IP
read -p “please input netmask:”MASK
read -p “please input gateway:”WAY
cd /etc/sysconfig/network-scripts/
echo “DEVICE=eth0” > ifcfg-eth0
echo “TYPE=Ethernet” >> ifcfg-eth0
echo “ONBOOT=yes” >> ifcfg-eth0
echo “BOOTPROTO=static” >> ifcfg-eth0
echo “IPADDR=$IP” >> ifcfg-eth0
echo “NETMASK=$MASK” >> ifcfg-eth0
echo “GATEWAY=$WAY” >> ifcfg-eth0
ifdown eth0
ifup eth0
1. 判断语句
//if 条件
//then 成立 子语句
//else 不成立 子语句
//fi
#!/bin/bash
if [3 -lt 5] //-lt 小于 -eq等于 -gt大于
then echo "yes"
fi // if语句以fi结束
2. 循环语句
for while
for根据取值列表循环
while根据条件进行循环
for 变量 in 取值列表{1..10}
#!/bin/bash
for i in {1..10}
do
echo $i
done
while 条件
do
子语句
done
#!/bin/bash
NUM=0
while[$NUM -lt 10]
do
let NUM++
echo $NUM
done
//ping 网段中所有主机
#!/bin/bash
NET=10.0.110
for IP in {1..254}
do
if 'ping -c2 -i0.2 -w2 $NET$IP &> /dev/null'
then echo -e "$NET$IP is \033[31mup\033[0m"
else echo -e "$NET$IP ip \033[31mdown\033[0m"
done
3. case语句
case 变量 in
模式1)
子语句
; ;
*)
自语句
esac
//函数 将一部分代码存储到一个变量中
//设计一个函数名字叫A
//运行A的时候屏幕输出ok
```
21. 打开,关闭防火墙
systemctl stop firewalld.service //关闭防火墙
systemctl start firewalld.service //打开防火墙
systemctl status firewalld.service //查看防火墙状态
systemctl disable firewalld.service //执行开机禁止防火墙自启命令
systemctl enable firewalld.service //执行开机自启防火墙命令
systemctl mask firewalld //防火墙锁定
systemctl unmask firewalld //取消防火墙锁定