《linux培训运维笔记.docx》由会员分享,可在线阅读,更多相关《linux培训运维笔记.docx(757页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Linux 运维培训学习笔记一直在用 Linux,但从未系统学习过,从 1 月 1 日开始学习到 7 月 16 日结束,近七个月学习,让自已对Linux 有了新的认识,老男孩老师的课真的不错,实战性很强。由于只能中午和晚上 10 点以后才有时间,所以所有的实验是在不同电脑上完成的,文中 IP 可能有点问题,但应该不会影响实验。同时,为了保证笔记的完整,在做笔记的时候,从网上也下载了些图片和内容。第一部分 运维的原则和学习方法第一章运维的原则:一、简单、易用、高效二、修改前做备份1、以便回滚2、以便事后比对改过的内三、最小化原则1、安装系统最小化2、开启服务最小化3、操作最小化rm -fr te
2、st.txt 多了 r,只是删除文件,,应为rm -f test.txt4、登陆最小化平时没有需求不用 root 登录,要用普通用户登录5、权限最小化6、配置参数要合理,不要最大化四、尽量走别人走过的路,出问题的几率小(运维要求稳定)第二章学习方法一、在使用中记忆二、通过案例来总结技术点三、画图来记忆知识点,让知识变得更简单,容易记忆四、当一个命令的输出,含有需要的内容的时候,要想到这个命令可能会有对应的参数直接显示我们需要的内容五、学会做小结,得出实践后的结论六、通过例子或案例来记忆结论七、尽量用man 来查看帮助,不要看二手资料。man 命令不仅可以查看命令,还可查看进程的帮助。八、用数据
3、说话,用实际测试得出结论九、部署正确时,可以折腾一个点,让系统报错,提升解决故障的能力十、先把路走通后,再多变通十一、把良好的操作习惯当做一个大事。十二、初学者学习 Linux 运维的几个问题及建议。见参考博文注 20十三、重目标、重思路、重方法、重实践、重习惯、重总结第二部分 Linux 基础第三章常用命令1、mkdir : 创建目录,make directorys,-p 递归创建目录mkdir -p /a/b/c2、ls : -l(long)d(directory)显示目录或文件,全称 list-l #列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等-d #只查看目录-F #
4、会在不同类型的文件后面加上*/=|等符号,以便区分不同类型文件-p #会在目录后面加上/,以便区分目录和文件-h #人类可读模式,显示 K、M、G-i #显示 inode,也就是文件的index number-r #依相反次序排列,reverse-R #列出所有子目录层, recursive-t #按修改时间进行文件的排序,-modification time-s #在每个文件的后面打印出文件的大小,-size-a #列出文件下所有的文件,包括以“.“开头的隐藏文件-A #列出除了.和.以外的文件。-color=auto #添加颜色-time-style=STYLE #style 值可选 fu
5、ll-iso,long-iso(最优), iso, locale ll -time-style=long-iso install.log (显示效果最好)-rw-r-r-. 1 root root 62057 2017-01-14 14:32 install.log ll -time-style=full-iso install.log-rw-r-r-. 1 root root 62057 2017-01-14 14:32:36.206994569 +0800 install.log ll -time-style=iso install.log-rw-r-r-. 1 root root 620
6、57 01-14 14:32 install.log ll -time-style=locale install.log-rw-r-r-. 1 root root 62057 Jan 14 14:32 install.log3、cd : 切换目录层次 change directory表示家目录,-表示上一次的目录cd cd /tep/fq cd /rootcd - # 回到/tep/fq4、pwd : 显示当前目录pwd5、echo : 打印输出内容(printf 复杂的输出) 参数:-n : 不换行输出-e : 激活转义字符,可以使用以下转义字符aalert (BEL)bbackspacec
7、produce no further outputeescapefform feednnew line#换行rcarriage returnthorizontal tab#水平 tab 键vvertical tab#垂直 tab 键示例:echo abceecho -n abcd;echo efg echo -e hellotworldhelloworldecho -e hellonworld helloworldecho -e hellovworld helloworld输出命令的结果:a、用反引号(tab 键上)echo date +%Fb、用$()echo $(date +%F)6、vi
8、/vim : 记事本编辑器:set nu 显示行号set tabstop=4 一个tab 为 4 个空格长度set ai 设置自动缩进syntax on高亮dd删除当前行yy复制当前行p粘贴行号 gg 定位到指定行号G切换到文件尾gg切换到文件首或 0:(注意是数字零)光标移至当前行首$:光标移至当前行尾7、cat : 查看文件内容(concatenate)cat /etc/hostscat -n /etc/hosts #显示行号cat a.txt md5_rc1.txt后一种是适用于文件名含有空格的文件。通常 xargs 用于隔断文件是默认为:空格、TAB、换行符等,-print0 则是以
9、NULL 隔断文件,xargs -0 就是以 NULL 来区分文件隔断。20、whoami : 查看当前命令行终端用户21、w : 查看当前登陆的用户和做什么22、su:切换用户参数:-c或-command=:执行完指定的指令后,即恢复原来的身份-f 或fast:适用于csh 与 tsch,使 shell 不用去读取启动文件-或-l 或login:改变身份时,也同时变更工作目录,以及 HOME,SHELL,USER,logname。此外,也会变更PATH 变量-m,-p 或-preserve-environment:变更身份时,不要变更环境变量-s 或-shell=:指定要执行的shell-h
10、elp:显示帮助-version;显示版本信息。示例:su - root22、sudo :让普通用户可以拥有指定的 root 权限功能,需 root 用户提前授权sudo useradd kkk23、rpm : 软件安装命令rpm -ivh :安装rpm -e :卸载rpm -e -nodeps :不考虑依赖,强行卸载24、whereis: locate the binary, source, and manual page files for a commandwhereis -b mkdir mkdir: /bin/mkdir25、uname : 查看系统版本-a:-r:-m:uname
11、-a26、halt:关机 (init 0)27、reboot 重启(init 6) 28、shutdownshutdown -r now : 重启shutdown -h now : 关机29、lsb_release:显示系统版本lsb_release -a30、lastlog : 查看用户是否登录过31、last : 查看最后登陆过的用户列表32、file : 查看文件类型33、ln : 创建链接文件硬链接:源文件与目标文件的 inode 号码相同,都指向同一个 inode ln 源文件 目标文件软链接:相当于 windows 中的快捷方式ln -s 源文件 目标文件ln -s /abc/de
12、f/ghi/jk/ /tmp/jk/可以通过 readlink 软链接名,来查看软链接信息34、stat : 查看文件信息参数:-L, -dereference #follow links-Z, -context #print the SELinux security context-f, -file-system #display file system status instead of file status-c -format=FORMAT #格式化输出-t, -terse #print the information in terse formThe valid format seq
13、uences for files (without -file-system):%aAccess rights in octal(八进制权限 644)%AAccess rights in human readable form(人类可读模式 rw-r-r-)%bNumber of blocks allocated (see %B)(取 stat 信息中的 Blocks: 后面的值)%BThe size in bytes of each block reported by %b%CSELinux security context string%dDevice number in decimal%
14、DDevice number in hex%fRaw mode in hex示例:%FFile type%gGroup ID of owner%GGroup name of ownerstat install.log File: install.logSize: 62057Blocks: 136IO Block: 4096regular fileDevice: 803h/2051dInode: 391683Links: 1Access: (0644/-rw-r-r-) Uid: (0/root)Gid: (0/root)Access:2017-01-0123:32:26.238999717+0
15、800Modify:2017-01-0200:00:41.324999404+0800Change:2017-01-0200:01:11.062999379+0800stat -c %B etiantian 512stat -c %d etiantian 1792stat -c %G etiantian root35、df : 检查 linux 服务器的文件系统的磁盘空间占用情况df -hi-a 全部文件系统列表-h 方便阅读方式显示-H 等于“-h”,但是计算式,1K=1000,而不是 1K=1024-i 显示 inode 信息-k 区块为 1024 字节-l 只显示本地文件系统-m 区块为
16、 1048576 字节-no-sync 忽略 sync 命令-P 输出格式为 POSIX-sync 在取得磁盘信息前,先执行 sync 命令-T 文件系统类型选择参数:-block-size= 指定区块大小-t 只显示选定文件系统的磁盘信息-x 不显示选定文件系统的磁盘信息-help 显示帮助信息-version 显示版本信息36、less : 是对文件或其它输出进行分页显示的工具(按屏显示,可以前滚(向下),也可回退(向上)-N #显示行号less a.txt less -N a.txt37、more:是对文件或其它输出进行分页显示的工具(按屏显示,可以前滚(向下),但不能回退(向上)38、
17、man : 查看命令及配置文件的帮助39、touch :创建文件或修改文件时间戳40、env : 显示当前用户的环境变量41、source : 读取和执行配置文件source /etc/sysconfig/i18n 或 . /etc/sysconfig/i18n42、netstat : 查看网络状态-tcp|-t-udp|-u-raw|-w-listening|-l-all|-a-numeric|-n -program|-pnetstat -lntup netstat -an43、lsof :列出当前系统打开文件的工具(list open files)参数:lsof -c abc 显示 abc
18、 进程现在打开的文件lsof -c -p 1234 列出进程号为 1234 的进程所打开的文件lsof -g gid 显示归属 gid 的进程情况lsof +d /usr/local/ 显示目录下被进程开启的文件lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长lsof -d 4 显示使用 fd 为 4 的进程lsof -i 用以显示符合条件的进程情况lsof -i46 protocolhostname|hostaddr:service|port46 - IPv4 or IPv6 protocol - TCP or UDPhostname - Internet ho
19、st name hostaddr - IPv4 地址service - /etc/service 中的 service name (可以不止一个)port - 端口号 (可以不止一个)输出各列信息的意义COMMAND:进程的名称 PID:进程标识符USER:进程所有者FD:文件描述符,应用程序通过文件描述符识别该文件。如 cwd、txt 等 TYPE:文件类型,如 DIR、REG 等DEVICE:指定磁盘的名称SIZE:文件的大小NODE:索引节点(文件在磁盘上的标识) NAME:打开文件的确切名称示例:lsof -i :port:查看端口情况lsof -i :22COMMANDPID USE
20、RFDTYPE DEVICE SIZE/OFF NODE NAMEsshd2776 root3u IPv4167240t0 TCP *:ssh (LISTEN)sshd2776 root4u IPv6167300t0 TCP *:ssh (LISTEN)sshd 23312 root 3r IPv4 3417749 0t0 TCP LS-B:ssh-127.0.0.1:patrolview (ESTABLISHED)44、crontab 命令crontab-操作每个用户的守护程序和执行的时间表。crontab file -u user-用指定的文件替代目前的 crontab。crontab -
21、 -u user-用标准输入替代目前的 crontab。crontab -l user-列出用户目前的 crontab。crontab -e user-编辑用户目前 的 crontab 。crontab -d user-删除用户目前 的 crontab 。crontab -c dir -指定 crontab 的目录。crontab 文件的格式:M H D m d cmdM:分钟(0-59)H:小时(0-23)D:天(1-31)m:月份(1-12)d:一星期内的天(0-6,0 为星期天)45、historyhistory -d 9 #删除指定行号的历史记录history -c #删除所有历史记录
22、可以通过配置 HISTCONTROL=ignorespace 环境变量来指定 history 命令不记录敏感操作。如: 一般情况会显示:history -cmysql -uroot -p123456 histroymysql -uroot -p123456 history使用 HISTCONTROLhistory -c HISTCONTROL=ignorespace mysql -uroot -p123456 histroyHISTCONTROL=ignorespace history46、seq:打印序列seq -s , -f t%01g 1 5-s:使用分隔符, :分隔符为了英文逗号-f:
23、格式化%01g :1 位浮点数结果:t1,t2,t3,t4,t547、chkconfigchkconfig -list #列出所有的系统服务chkconfig -add httpd #增加 httpd 服务chkconfig -del httpd #删除 httpd 服务chkconfig -level httpd 2345 on #设置httpd 在运行级别为 2、3、4、5 的情况下都是 on(开启)的状态chkconfig -list #列出系统所有的服务启动情况chkconfig -list mysqld #列出 mysqld 服务设置情况chkconfig -level 35 mys
24、qld on #设定 mysqld 在等级 3 和 5 为开机运行服务,level 35 表示操作只在等级 3 和 5 执行,on 表示启动,off 表示关闭chkconfig mysqld on #设定 mysqld 在各等级为 on,“各等级”包括 2、3、4、5 等级48、grep(三剑客之三)参数:-c:只输出匹配行的计数。-i:不区分大 小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及 行号。-s:不显示不存在或无匹配文本的错误信息。-v:排除,显示不包含匹配文本的所有行。-e: 或的意思,可使用多个条件-E:
25、使用多个条件,相当于多个-e,需加双引号-color=auto #添加颜色grep -E 相当于 egrep示例:grep test d*# 显示所有以 d 开头的文件中包含 test 的行。grep test aa bb cc #显示在 aa,bb,cc 文件中匹配 test 的行。grep linuxtechi /etc/passwd: #在/etc/passwd 文件中查找单词linuxtechigrep -e EST -e WAIT /netstat.log#在 netstat.log 中查找包含 EST 或 WAIT 的行grep -E EST|WAIT /netstat.log#在
26、 netstat.log 中查找包含 EST 或 WAIT 的行grep -v # /etc/ssh/sshd_config#过滤文件/etc/ssh/sshd_config 中所有的注释grep -Ev #|$ /etc/ssh/sshd_config #过滤文件/etc/ssh/sshd_config 中所有的注释和空行49、sed(三剑客之二)说明sed 是一种在线编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用 sed 命令处理缓冲区的内容,处理完成后,把缓冲区的内容打印到屏幕。然后处理下一行,至文件末尾。此时,原文
27、件的内容不会改变,除非用-i 参数来指定sed 修改原文件。sed 的分隔符可以是#,也可以是/。格式:sed -nefri n1,n2command 输入文本参 数 : 选项参数-n:取消默认打印,只打印 sed 特殊处理的那一行。-e:直接在指令列模式上进行 sed 的动作编辑。-f:sed 直接执行动作文件内的动作command。-f commandfile-r:使用扩展的正则表达式(默认为基础正则表达式语法)-i:直接修改读取的文件的内容,不在由屏幕输出n1,n2一般表示选择要进行动作的行数。如动作要删除在 10 行到 20 行之间的行:10,20dcommand 命令参数a:新增。新
28、增一行 a 后面的字符串(当前行的下一行) c:取代。c 后面的字符串可以取代n1,n2 之间的行d:删除。i:插入。插入 i 后面的字符串(当前行的上一行)p:打印。s:替换。小括号()分组功能sed -nr s#abc(.*)#1#gps#g 中第 1 个#和第 2 个#之间的内容表示要查找的内容,可以用正则表达式,其中用小括号()括起来的内容,可以在第 2 个#和第 3 个#之间用1 来调用,第 2 个#和第 3 个#之间不能用正则表达式。如查前面有多个小括号,则1、2、.n 来表示第 1 个括号的内容,第 2 个括号的内容。第 n 个括号的内容。r 表示使用正则表达式,g 表示全局替换
29、,p 表示打印。由于前面有-n 取消了默认输出,所以必须用参数 p 来打印过滤出的内容,否则什么都不会输出。示例:sed s#str1#str2#g filename:用 str2 替换 str1,只打印,但不改原文件内容。-i:表示修改原文件内容sed s#oldboylinux#mywindows#g ett.txt:将 oldboylinux 替换成 mywindows sed -i s#oldboylinux#mywindows#g ett.txt :此时 ett.txt 中的内容已被替换sed -n 2p #显示第 2 行sed -n 2,5d #删除第 2、3、4、5 行sed -
30、n /oldboylinux/p ett.txt #过滤出含有 oldboylinux 的行echo kkkddd | sed s#(kkk)(ddd)#1#g#kkk echo kkkddd | sed -r s#(kkk)(ddd)#1#g#kkkecho kkkddd | sed -r s#(kkk)(ddd)#12#g#kkkddd echo kkkddd | sed -r s#(kkk)(ddd)#1 is a 2#g# kkk is a ddd删除 ifconfig eth1 的输出前后的空格,并将内容中的相连的多个空格替换为一个空格ifconfig eth1 | sed -r s
31、# +# #g | sed -r s# #g | sed -r s# +$#g在 a.txt 文件的第 1 行插入 1 行内容为:wddglogsed -i 1 i wddglog a.txt # -i 表示修改原文件,1 表示第 1 行,i 表示插入50、awk(三剑客之一)awk -F: print $1 /etc/passwd #以:为分隔符,打印/etc/passwd 中的第一列-F:指定分隔符,默认分隔符为空格。多个分隔符需用,内的全部为分隔符,同时有效$0:表示一行$1:表示第一列$n:表示第 n 列$NF:表示最后一列NR:表示行号cat /etc/passwd | awk -F
32、: print $1echo I am oldboy,myqq is 49000448 | awk -F , print $3 $6 #以空格和逗号为分隔符oldboy 4900044851、tar:打包和压缩/解压缩命令格式:tar 必选参数+辅助参数 包名 需打包的文件或目录参数:必选参数-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名必选参数之只选一(五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。)-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件可选参数-z:有 gzip 属性的-
33、j:有 bz2 属性的-Z:有 compress 属性的-v:显示所有过程-O:将文件解开到标准输出-P: 不提示-C: 改变目录-X: 打包时根据文件列表排除文件-exclude Filename:排除,在压缩的过程中,不要将 Filename 打包! 常用参数组合:gzip 打包组合zcvf,解包组合 zxvf bzip 打包组合jcvf,解包组合 jxvf压缩示例:tar zcvf a.tar.gz /tmp/kkk tar jcvf a.tar.bz /tmp/kkktarzcvfworkspace.tar.gz-exclude/Workspace/LinuxWorkspace/# 打
34、 包 时 排 除/Workspace/Linuxtar zcvfX workspace.tar.gz a.txt /Workspace/Linux Workspace/#打包时根据 a.txt 中的文件名排除cat a.txt aa.txt bb.txt cc.txt解压示例:tar -xvf file.tar#解压 tar 包tar -xzvf file.tar.gz#解压 tar.gztar -xjvf file.tar.bz2#解压 tar.bz2 tar -xZvf file.tar.Z#解压 tar.Ztar -xvf file2.tar -C /home/usr2 #将 file2
35、.tar 解压到/home/usr2 下52、cut:从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。格式:cut -bn file 或 cut -c file 或 cut -df file参数-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。-c :以字符为单位进行分割。-d :自定义分隔符,默认为制表符。-f :与-d 一起使用,指定显示哪列。f3 表示第三列,f3,6 表示第 3 列和第 6 列,f2-5 表示第 2 列到第 5 列-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志
36、的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。cut 命令主要是接受三个定位方法: 第一,字节(bytes),用选项-b第二,字符(characters),用选项-c第三,域(fields),用选项-f示例:cat cut_ch.txt星期一星期二星期三星期四cut -c 3 cut_ch.txt一二三四53、tr:也是替换命令echo I am oldboy,myqq is 49000448 | tr , #将逗号替换成空格echo abc | tr abc xyz #x 替换a,y 替换 b,z 替换c54、wc:打印文件的文本行数、单词数、字节数参数:-c, -
37、bytes: 打印字节数(print the byte counts)-m, -chars:打印字符数(print the character counts)-l, -lines:打印行数(print the newline counts)-L, -max-line-length:打印最长行的长度(print the length of the longest line)-w, -words:打印单词数(print the word counts) 示例wc -lines /etc/passwd wc -l /etc/passwd55、du: 查看文件和目录磁盘使用的空间参数:-a 或-all
38、 显示目录中个别文件的大小。-b 或-bytes 显示目录或文件大小时,以byte 为单位。-c 或-total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。-k 或-kilobytes 以KB(1024bytes)为单位输出。-m 或-megabytes 以MB 为单位输出。-s 或-summarize 仅显示总计,只列出最后加总的值。-h 或-human-readable 以K,M,G 为单位,提高信息的可读性。-x 或-one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。-L或-dereference 显示选项中所指定符号
39、链接的源文件大小。-S 或-separate-dirs显示个别目录的大小时,并不含其子目录的大小。-X或-exclude-from= 在指定目录或文件。-exclude=略过指定的目录或文件。-D 或-dereference-args显示指定符号链接的源文件大小。-H 或-si 与-h 参数相同,但是 K,M,G 是以 1000 为换算单位。-l 或-count-links重复计算硬件链接的文件。示例:(1) 显示目录或者文件所占空间du(2) 显示指定文件所占空间du log2012.log(3) 查看指定目录的所占空间du scf(4) 显示多个文件所占空间du log30.tar.gz log31.tar.gz(5) 只显示总和的大小du -s scf(6) 方便阅读的格式显示du -h test(7) 文件和目录都显示du -ah test(8) 显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和du -c log30.tar.gz log31.tar.gz(9) 输出当前目录下各个子目录所使用的空间du -h -max-depth=156、useradd : 建立用户账号格式:useradd -mMnr-c -d -e -f -g -G -s -u 用户帐号 或 useradd -D -b-e -f -g -G -s 参数:-c