Linux运维课程第二阶段重难点摘要(一)
linux基础概念及常用命令
一、基础概念:
1、CPU(slice):运算器(线路复用)、控制器(芯片针脚有电没电)、寄存器(保存现场);
interrupt(中断,硬件通知机制),FSB(frontside bus前端总线),1GHZ=10^9HZ(1KHZ=10^3HZ);
存储器(分段,虚拟地址空间,32bit最多使用4G物理内存):RAM、ROM;
程序局部性原理:时间上(频繁使用的数据—>缓存),空间上;
程序的移植(底层芯片)。
Input/Output device:
2、低级语言:机器语言;微码(芯片自带,汇编语言)->编译器
高级语言:API(application program interface);库(虚拟设备,程序,调用接口,只能被调用)
3、硬件架构:ARM系列(高通)、X86(intel/amd)、X64(AMD)、安腾(intel从HP收购)、alpha(HP)、UtralSparc(SUN)、power(IBM)、M68000 (M68K,motorola)、powerpc
4、OS:windows、Linux、UNIX泛称(HP Unix、Solaris(SUN)、AIX(IBM)、SCO Unix、UnixWare)
5、shell:GUI(graphicaluser interface,GNOME/KDE/Xface);CLI(command line interface,prompt(#,$),bash/csh/zsh/ksh/tcsh);虚拟终端(CLI下的terminal;模拟终端(GUI下打开的terminal)
6、两大雷锋实验室Bell Labs(Alcatel-Lucent阿尔卡特朗讯)、parc(Xeron施乐);GPL,BSD,apache三个开源协定;www.kernel.org
7、内核功能:进程管理、内存管理、文件系统、网络功能、硬件驱动、安全机制
8、redhat(rpm),debian(dpt),suse,SLS,centos,mandriva,Ubuntu,fedora
9、Linux的基本原则:由目的单一的小程序组成(组合小程序完成复杂任务);一切皆文件;尽量避免捕获用户接口(不与用户交互);配置文件保存为纯文本格式
10、 RH401,RH423,RH442(系统调优),RH436(集群),RHS333(加密机制)
11、 IDE(integrated developmentenvironment集成开发环境)( Integrated Device Electronics集成器件电子技术)
12、 windows(dll,dynamic linklibrary);linux(.so,shared object)
13、 认证(authentication);授权(authorization);审计(Audition,日志)
14、 程序的执行入口(魔数magic number,提示二进制程序的执行格式,如脚本的第一句#!/bin/bash)
15、 目录也是文件,是路径映射;路径(从指定起始点到目的地所经过的位置);层次化管理的机制(filesystem);绝对路径(从根开始);相对路径;进入系统默认位置(working directory,current directory)
16、 密码复杂度规则:使用4种类别字符中至少3种;足够长,大于7位;使用随机字符串;定期更换;循环周期足够大(与近期24次的密码不一样)。例如:6位密码:10^6(仅数字)、36^6(字母数字组合)、62^6(大小写加数字、100^6(全键盘组合))
17、 在linux下操作的每一条命令,没有任何消息就是最好的信息,表示操作成功
18、 文件的命令规则:长度不能超过255个字符;不能使用/斜线slash作文件名,除此之外其它都可,但不建议使用其它字符,如空格、星号等;严格区分大小写
二、命令:
1、语法:
#COMMAND [option]... arguments
命令中[]表示可选,<>表示必选,...表示可出现多次,|表示多选一,{}表示分组
option(选项:修改命令的执行特性):短选项-(多个短选项可以组合);长选项--
arguments(参数:指定命令的作用对象)
命令类型:内置命令(SHELL内置)、外部命令(某一路径下有与命令名称相应的可执行文件)
#type COMMAND(查看命令属于哪种类型)
#help COMMAND(内部命令获得帮助信息)
#COMMAND --help(外部命令获得简要帮助)
man的使用:
#man COMMAND(manual命令手册,文本文档,压缩存放,内部命令用man查看的是bash的帮助)
man的几个部分:
Name(命令名称及功能简要说明)
Synopsis(用法说明,包括可用的选项)
Description(命令功能的详尽说明,包括每一个选项的意义)
Options(说明每一个选项的意义)
FILES(此命令的相关文件)
BUGS
EXAMPLES(使用示例)
See also(另外参照)
man分8章节:1用户命令;2系统调用;3库调用;4特殊文件(设备文件,进入设备的入口);5文件格式(配置文件语法);6游戏;7杂项;8管理命令(硬件参数及系统级别配置/sbin,/usr/sbin,/usr/local/sbin)
举例:
#whatis passwd(查看此命令有几个章节的帮助信息)
#man 5 passwd(查看/etc/passwd配置文件的语法说明)
man常用快捷键
空格space向后翻一屏
b向前翻一屏backspace
<Enter>向后翻一行
k向前翻一行
查找/KEYWORD(由前到后查找,?KEYWORD后到前查找,n查找下一个匹配项,N查找前一个匹配项)
q退出
/usr/share/doc/(几乎每一个命令在此目录下都有相关文档)
#info COMMAND(在线文档帮助,查看内容更详细,支持链接跳转)
2、常用命令:
目录管理:ls,cd,pwd,mkdir,rmdir,tree
#ls -l FILE
文件类型:-(f,普通文件)|d(directory)|b(block device)|c(character device)|l(symbolic linkfile)|p(pipe)|s(socket)
文件权限:rwxrwxrwx
文件硬链接次数
文件属主
文件属组
文件大小(默认字节)
时间戳(timestamp)最近一次被修改的时间(访问access;修改modify(文件内容);改变change(文件属性),文件属性数据:元数据metadata,inode(index node))
-h(humanreadable做单位换算)
-a(显示以点.开头的隐藏文件)
-A(显示全部文件不显示.及..)
-d(显示目录自身属性)
-i(显示文件的索引节点号inode)
-r(reverse反向显示,逆序显示)
-R(recursive递归显示)
#cd(change directory,使用#cd直接回车,表示回到当前用户家目录home directory)
#cd ~USERNAME(进入指定用户的家目录,仅管理员用)
#cd -(在当前目录和前一次所在目录之间来回切换)
#cd ..(切至上一级目录)
#cd ../..(切至上两级目录)
# mkdir [OPTION]... DIRECTORY...(makedirectory,创建空目录)
#mkdir /backup
#mkdir -p /backup/test/(-p表示父目录及其下的目录一块创建--parents)
#mkdir -pv /backup/test/1/2(-v表示显示详细信息--verbose)
#mkdir -pv /backup/{a,c}_{b,d}(创建a_b,a_d,d_b,d-d目录)
#tree /backup(查看目录树)
#pwd(print name ofcurrent/working directory查看当前所在目录)
# rmdir [OPTION]... DIRECTORY...(remove emptydirectories删除空目录)
#rmdir /backup/test/1/2
文件管理:touch,stat,file,rm,cp,mv,install
# touch [OPTION]... FILE...(change filetimestamp,改变文件时间戳,可用于创建文件)
#touch /backup/test1(创建文件,注意目录和文件不能同名)
#cd /backup
#stat /backup/test1(显示文件的状态信息)
#touch -a test1(change onlythe access time,atime文件访问时间)
#touch -m test1(change onlythe modification time,mtime文件修改时间(文件修改时间指内容))
#touch -a -t 1507111430 test1(用指定时间改变文件的访问时间)
#touch -c test1(-c表示不创建文件—no-create,更改文件的所有时间atime,mtime,ctime(文件改变时间指属性))
#cp [OPTION]...SOURCE[...] DEST|DIRECTORY(copy,可复制一个文件到一个文件,或多个文件到一个目录)
options:
-r(--recursive递归复制,目录及其下的子目录或文件)
-p(--preserve=mode,ownership,timestamps保留文件属性信息)
-i(--interactive交互模式,询问)
-f(--force强制复制)
-a(--archive, -dr --preserve=all,常用于备份)
#cp -p /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp/
#mv SRC DEST(移动或改名)
#mv -t DEST SRC(先指定目标)
#file /bin/ls(查看文件类型,ELF:executable link file;windows下类似此文件为PE,portableexecute)
#file test.txt(ASCII text,america standard code for information interchange,7位即可表示128个字符2^7(0-127),1byte=8bit;汉字2^16(0-65535)65536个字符,国标GB/8030,GBK,GB2312,Unicode(utf-8,universalcode全球编码))
#file sum.sh(Bourne-Again shell script text executable)
#install [options] SRC DEST(copy files and setattributes)
#install -m 644 /tmp/test.txt /tmp/test1.txt(复制文件,并设置权限,若无-m指定权限则默认复制的文件都为755)
#install -d /tmp/install.1(创建空目录)
#install -t /tmp/install.1 /tmp/test.txt(复制test.txt到/tmp/install.1目录下,注意不加-m默认复制文件的权限为755)
#rm [OPTION]... FILE...(remove filesor directories删除文件或目录)
option:
-r(--recursive递归)
-f(--force强制)
#rm -rf /backup/*(删除指定目录下所有文件及目录)
日期时间:
RTC(real time clock)、ntp(network timeprotocol)
linux分:硬件时钟、系统时钟
#date [options]... [+FORMAT]
#date(查看的是系统时钟,根据CPU的繁忙程度系统时钟有可能不准)
#date -s 20150711(调整系统日期)
#date -s 14:20:20(调整系统时间)
#date +%F(显示日期年月日,完整格式为%Y-%m-%d)
#date +%T(显示日间时分秒,完整格式为%H:%M:%S)
#date +”This year is %Y.%nToday is %d.”(%n表示换行)
#clock(查看硬件时钟,此命令是链接文件链接到/sbin/hwclock)
#hwclock(query and set thehardware clock (RTC)查看或设置硬件时钟)
#hwclock -w(--systohc,系统时钟同步到硬件时钟)
#hwclock -s(--hctosys,硬件时钟同步到系统时钟)
#cal(calendar显示当月日历)
#cal 2015(显示2015年全年日历)
#cal 07 2015(显示指定月日历)
文本查看与处理:cat,tac,more,less,head,tail,cut,sort,uniq,wc,tr,sed,grep,awk(grep,awk见shell编程)
#cat [-n|-E] FILE(-n显示行号,-E显示结束符,linux的文本文件的结束符是$或换行符)
#tac FILE(concatenate and print files in reverse,cat显示的最后一行是tac显示的第一行,反向显示)
#more FILE(分屏查看,向后翻,翻至尾部直接退出)
#less FILE(分屏查看,man就是通过调用less打开文件的)
#head -n # FILE(仅查看文件的头#行)
#tail -n 5 FILE(仅查看文件的后5行)
#cut -d: -f1,3 /etc/passwd(-d,--delimiter指定分隔符;-f,--fields指定第几列,字段)
#sort [option] FILE(排序,仅影响显示,不影响源文件内容,逐个字符从左至右默认按ASCII码表排序)
option:
-n(--numeric-sort按数值排序)
-r(--reverse反向排序,降序排序)
-t(--field-separator字段分隔符)
-k(--key-pos1,pos2以哪个字段为关键字进行排序)
-u(--unique排序后相同内容只显示一次)
-f(--ignore-case忽略字符大小写)
例:#sort -t: -k3 -n /etc/passwd
#uniq(report or omitrepeated lines,同#sort -u FILE,重复行是相邻且重复的行,如一文本中有三行重复但不相邻则不是重复行)
option:
-d(--repeated,仅显示重复的行)
-D(--all-repeated,重复的行全部显示)
-c(--count,显示每一行重复行的次数)
#wc FILE(word ...counts文本统计,显示结果为行数,单词数,字节数)
option:
-l(--lines只显示行数)
-w(--words只显示单词数)
-c(--bytes只显示字节数)
-m(--chars只显示字符数,同字节数)
-L(--max-line-length最长的一行有多少字符数)
#tr [option] SET1 [SET2] < FILE(translate ordelete characters转换或删除字符,SET表示字符集)
option:
-d(--delete删除指定字符)
#tr ‘ab’ ‘A-Z’ < /tmp/text.txt(将文件中所有字母转为大写)
#echo “abcdefg” | tr -d “abc”(删除显示指定字符)
Linux文本处理三剑客:grep(文本过滤器)、sed、awk(报告生成器)
sed(stream editor):行编辑器、全屏编辑器,把每行读到内存空间(模式空间),默认不编辑源文件,仅对模式空间的数据作处理,处理结束将模式空间打印至屏幕;
#sed [options] ‘AddressCommand’ file1...
options:
-n(静默模式,不再显示模式空间的行,不加-n默认是打印模式空间);
-i(直接修改源文件);
-e(后接脚本或编辑好的语句,如#sed -e SCRIPT -e SCRIPT FILE,可以同时执行多个脚本);
-f(后接脚本文件,如#sed -f /PATH/TO/FILE FILE);
-r(表示使用扩展正则表达式)
Address:
start line,end line;(起始行,结束行,例如:1,13)
/pattern/(//中间是正则表达式)
/pattern1/,/pattern2/(第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束,中间的所有行);
linenumber(指定行);
startline,+N(从startline开始向后N行)
Command:
d(删除符合条件的行);
P(显示符合条件的行);
a \string(在指定的行后追加新行,内容为string);
i \string(在指定的行前添加新行,内容为string);
r FILE(将指定文件的内容添加至符合条件的行处);
w FILE(将指定范围内的行另存至指定的文件中);
s/pattern/string/修饰符(查找并替换,不加修饰符g默认只替换第一次被模式匹配到的字符串,修饰符(g全局替换,i查找时忽略大小写),s///也可用s###,s@@@等其它符号)
举例:
#sed ‘/^\//a # hello linux’ /etc/fstab (在行首是/的行后追加# hello linux)
#sed ‘/^\//a # hello linux\n# hello world’ /etc/fstab (在行首是/的行后追加两行)
#sed ‘$r /etc/issue’ /etc/fstab (在末行后添加指定文件内容,此例可用做文件合并)
#sed ‘1,2r /etc/issue’ /etc/fstab (在第一行和第二行后都追加指定文件的内容)
#sed ‘/oot/w /tmp/oot.txt’ /etc/fstab (将查询到的含oot的行另存至指定文件/tmp/oot.txt)
#sed ‘s/oot/OOT/g’ /tmp/oot.txt (将查询到含oot的全部替换为大写)
#sed ‘s/^\//#/g’ /etc/fstab (将行首的/全部替换为#)
#sed ‘s#l..e#&r#g’ test.txt (&-r匹配模式里的整个字符串,将文件中like或love均替换为liker或lover)
#sed ‘s#\(l..e\)#\1r#g’ test.txt (同上例)
#sed ‘s#l\(..e\)#L\1#g’ test.txt (将文件中like或love替换为Like或Love)
#sed -r ‘s/^[[:space:]]+//g’ /etc/grub.conf (删除行首的空白字符)
#history | sed ‘s#^[[:space:]]##g’ (功能同上例)
#sed ‘s@\(id:\)[0-9]\(:initdefault\)@\15\2@g’ /etc/inittab (将行id:3:initdefault中的3替换为5)
#sed ‘/^$/d’ /etc/inittab (删除空白行)
#sed ‘s/^#//g’ /etc/inittab (删除文件中开头的#)
#sed -r ‘s/^#[[:space:]]+//g’ /etc/inittab (删除文件中开头的#,且#后必须有空白字符)
#sed -r ‘s@^[[:space:]]+#@@g’ test.txt (删除文件中以空白字符开头后跟#的行)
#echo “/etc/rc.d/” | sed -r ‘s@^(/.*/)[^/]+/?@\1@g’ (取出一路径中上一层目录的名称)
文件查找:
#locate FILE(此方式是根据系统文件数据库进行的,非实时查找且是模糊匹配)
#updatedb(手动生成文件数据库,新装的系统可能此文件数据库,需手动生成)
#find 查找路径 查找标准 处理动作action(实时查找,精确匹配,支持众多的查找标准,遍历指定目录中的所有文件,速度慢)
查找标准:
-name ‘FILENAME’(对文件名作精确匹配,区分大小写,支持通配符*?[])
-iname ‘FILENAME’(对文件名作精确匹配,不区分大小写,支持通配符)
-regex PATTERN(基于模式进行文件名匹配)
-user USERNAME(根据属主查找)
-group GROUPNAME(根据属组查找)
-uid UID(用户删除后,查看该用户的文件时显示的是UID和GID)
-gid GID
-nouser(查找无属主文件)
-nogroup
-type f|d|c|b|l|p|s
-size [+|-]#k|#M|#G (#是数字)
-mtime|-ctime|atime [+|-]#(-5表示5天内,+5表示5天前,5表示第5天)
-mmin|-cmin|-amin [+|-]#
-perm mode|-mode|/mode(/644表示有任意一位匹配即可,-644表示要查找的文件权限能完全包含644例如755)
组合条件:-a|-o|-not
处理动作:
-print(默认)
-ls(类似ll形式显示每一个文件)
-ok COMMAND {} \;(每一次都需确认,{}表示查找到的文件,)
-exec COMMAND {} \;(不需确认)
举例:
1、查找/var下属主为root且属组为mail的所有文件
#find /var -user root -a -group mail
2、查找/usr下不属于root、bin、stu的文件
#find /usr -not \( -user root -o -user bin -o -user stu \)
3、查找/etc下最近一周内内容修改过且不属于root及stu用户的文件
#find /etc -mtime -7 -not \( -user root -o -user stu \)
4、查找当前系统上没有属主或改组且最近1天内被访问过的文件,并将属主属组改为root
#find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root.root {} \;
5、查找/etc下大于1M的文件,将文件名写入/tmp/etc.largefiles文件中
#find /etc -size +1M >> /tmp/etc.largefiles
#find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles \;
#find /etc -size +1M | xargs echo >> /tmp/etc/largefils
6、查找/etc下所有用户都没写权限的文件,显示出其详细信息
#find /etc -not -perm -ls
#echo “this year is 2015.”(显示输入数据)
#echo -n “this year is 2015.”(-n表示显示完内容不换行)
#echo -e “this year is 2015.\nthismonth is 07.”(-e启用反斜线功能,\n)
#printf “this year is 2015.\nthis month is 07.\n”(格式化输出数据,默认不换行)
\\ backslash
\a alert (BEL)
\b backspace
\c produce no further output
\e escape
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
以上是学习《马哥网络视频》做的笔记
注:本文由互联网收集整理(51CTO、360DOC、chinaunix、百度百科、兄弟连免费视频等)。
本文出自 “Linux运维重难点学习笔记” 博客,请务必保留此出处http://jowin.blog.51cto.com/10090021/1640093