1.2 云计算系统管理:Linux发展史,Linux目录结构,常用命令行
什么是Linux
- Linux是一种操作系统。Microsoft以前的眼中钉,如今的互联网幕后boss。
- 超级计算机Top500:超级计算机大部分都是Linux系统
Unix/Linux发展史
- Unix官方生日:1970.1.1
- 内核版本号:主版本.次版本.修订号 。如4.10.123
Linux版本及应用
- 因为Linux开源,所以版本非常多,比如Red Hat Enterprise Linux 5/6/7,Suse Linux Enterprise 12,Debian Linux 7.8,Ubuntu Linux 14.10/15.04。发行版的名称/版本由发行方决定。
- Red Hat系列版本
– 红帽Linux企业版(Red Hat Enterprise Linux,简称RHEL)
– Fedora Core社区版
– CentOS社区企业操作系统(Community Enterprise Operating System):企业用的更多的是CentOS,和RHEL的架构和操作一模一样,但是RHEL是收费的
Linux目录结构
- Windows目录结构:树形结构
- Linux目录结构:所有数据都在根目录下,根目录用“/”表示。根目录下的子目录有boot home root tmp等,都有自己的作用。
- 路径:/dev/abc/haha.txt,只有开头的/代表根目录,后面的/都是分隔符
– 相对路径:不完整的路径
– 绝对路径:完整的路径
– 比如有一个绝对路径是/etc/pki,如果在etc里,想进pki,有两种方式。第一种用绝对路径cd /etc/pki,进了pki以后再输这个,输多少遍都不会报错。第二种是输相对路径cd pki,也就是这个目录此时的相对位置。但是这样进了pki以后,再输pki就会报错。 - 根目录(/):所有的数据都在此目录下(Linux系统的起点)
– /dev:存放设备(键盘鼠标显示器磁盘光驱等)。Linux磁盘的表示方法:/dev表示设备所在位置,hd表示IDE设备,sd表示SCSI设备,最后一个字母表示第几块。如1)/dev/sdb:表示SCSI设备,第2块,2)/dev/hdd:表示IDE设备,第4块。
– /home:存放所有普通用户的家目录。家目录是用户所有的个性化信息,如创建的文件。普通用户的所有数据都在/home里。
– /root:管理员的家目录,存放脚本之类的。相当于管理员给自己建了一个别墅/root,把普通用户都放到了一个叫/home的小区,每个用户在小区里面有一个自己的家。
– /etc:存放系统配置文件。重要性不亚于/root。开机等所使用的配置文件都存在这个地方。
– /opt:用户可选择目录(主要给root用户使用)。也就是说完全给用户自主用的,没有其他特定功能。
– /proc:存放内存中的映射数据,不占用磁盘空间,数据来源于内存
– /boot:存放系统必要文件,包括内核,启动配置
– /bin、/sbin:存放各种命令程序
– /tmp:存放系统运行过程中使用的一些临时文件
– /var:存放日志文件、邮箱目录等经常变化的文件
命令行
log in后显示的[root@localhost ~]#:
- [当前登录的用户@当前主机名 当前所在位置]
– localhost是默认主机名
– @没有意义,单纯分隔符
– #代表当前身份为超级管理员root,权限很大,可以看普通用户的所有东西。$代表普通用户。
– ~:家目录。
pwd
- print working directory,查看当前所在的位置
cd:change directory,切换目录位置
- 格式:cd [目标目录位置]
- cd .:cd加一个点表示当前目录的完整路径,随当前位置变化而变化
- cd…:两个点表示父目录
- cd ~[其他用户名]:管理员访问其他用户的家,如cd ~lisi
- cd ~:进入当前用户的家目录,登录账号以后所在的缺省目录
useradd [新用户名]
- 管理员创建新用户
ls
- 缩写list,显示当前目录下内容
- 白色背景下列出的蓝色是目录,黑色是文件,浅蓝色是快捷方式,红色是压缩包,背景红色白色字体的目录代表有特殊权限。黑色背景下列出的紫色是目录,绿色是文件。
- ls [目标目录]:查看目标目录下的内容。ls后跟的被称作参数,可以同时查看多个目录,不同参数之间用格隔开,如ls /bin /root
- lscpu:查看cpu
- –l:abbr. long。显示详细属性。详细信息中,d开头是的目录(蓝色);l开头的是连接,引到目录(浅蓝色);–开头的是文件(黑色)。
- –h:与–l一起使用,加上用易读的单位。–l里只显示出无单位的numerical大小,–h会加上单位。
- –d:与–l一起使用,显示目录本身的详细信息。ls –l /opt显示的是opt中文件的详细信息,如果想看/opt目录本身的详细信息,需要输入ls –ld。
- –A:查看全部数据,包括隐藏数据。Linux中隐藏数据以.开头。表示all,l表示显示所有详细信息。
- –n:abbr. number。给输出结果编号。
- lsblk:查看当前系统所有的硬盘信息
cat
- 查看文本文件内容的命令
- 格式:cat [文件路径]
- cat /etc/redhat–release:查看当前系统的版本
- cat /proc/meminfo:查看内存
hostname:查看主机名
- 主机名中有’.'的话,只会显示第一个.之前的内容,比如a.b.c,只会显示a(但是hostname仍是a.b.c)。如果没有点就显示完整名字。
- echo “主机名” > /etc/hostname:永久设置主机名。/etc/hostname默认状态下不存在,执行完这条命令后就有了。7.0系统里,这条命令打完即生效。
ifconfig:
- 列出所有active的网卡。eth代表了Linux的网卡,eth0是第一张网卡,eth1是第二张网卡,以此类推。lo代表回环接口,专用于测试,用本机访问本机,如果本机都无法访问本机,其它机器更不能访问。回环接口固定ip地址127.0.0.1(which means此ip地址永远代表本机)。可以ping 127.0.0.1(或者ping本机ip地址)来看能不能和自己连通(但如果用了这个,机器会一遍一遍check,不停下来,需要用Ctrl+c来停止)。
- ifconfig [网卡名]:查看网卡名
- ifconfig [网卡名] [IP地址]:给网卡配IP地址。如ifconfig eth0 192.168.1.1。一个主机可以有好几块网卡,which means一台主机上能配很多IP地址。
reboot:重启命令
poweroff:关机
nmtui
- 在图形界面永久设置主机名/IP地址/子网掩码/DNS服务器地址/网关地址等
- 在写地址时,后面要写上/24或者其他的相匹配的子网掩码,否则默认/32,即全部为网络位。
- 网关地址和IP地址必须在同一网段。
- 如果本身没有配置网卡,设置完了后直接生效,如果原本有,需要选择启用连接重新激活。
nmcli:命令行模式永久设置IP地址,子网掩码,网关地址等
- nmcli connection show:显示网卡名称
- nmcli connection modify “连接名” ipv4.method manual ipv4.addresses “172.25.0.11/24 172.25.0.254” ipv4.dns 172.25.254.254:配置IP 地址/掩码/默认网关/DNS 地址
- nmcli connection modify “连接名” connection.autoconnect yes:自动连接
- nmcli connection up “连接名”:启用配置
less
- less [路径]:分页查看大文件。按键盘上下键翻页。
– 输入 /检索字:全文查找关键字。如输入/bin就全文查找bin
– 输入n:跳转匹配的项
– 输入q:退出
mkdir
- mkdir 目录名:当前路径下创建(e.g. mkdir nsd03)
- mkdir [/路径/]目录名:在此路径下创建目录(e.g. mkdir /root/nsd03)
- –p:表示连父目录一起创建 (比如mkdir –p a/b/c是创建a/b/c嵌套目录)
- –R:表示递归显示,即全部展开显示。如:/opt/a/b/c/d is valid,ls –R /opt/a就会依次把/a,/b,/c,/d都显示出来
touch
- 创建文件 / 修改时间戳
- 格式:touch [/路径/]文件名
- 如果该路径下不存在此名文件,则创建空白文件(e.g. touch /opt/1.txt)
- 如果该路径下存在此名文件,修改文件时间戳(比如原文件时间戳是2018年9月,执行此命令后时间戳就更改成当前时间)
显示头尾n行:
- head –数字n [路径]:显示头n行(不输–n的话,默认显示十行)
- tail –数字n [路径]:显示最后n行(不输–n的话,默认显示十行)
grep
- grep 字符串 目标文件:输出包含指定字符串的行。如grep ‘haha’ /opt/a.txt,就是输出/opt下a.txt文件中所有包含哈哈的行。
- grep –v 字符串 目标文件:输出不包含指定字符串的行
- grep –i 字符串 目标文件:忽略大小写输出
- grep ^字符串 目标文件:输出开头是指定字符串的行。
- grep $字符串 目标文件:输出结尾是指定字符串的行。
- 显示文件的有效信息(即去掉注释行、空行。注释行大多数以#开头,少数以;等其他符号开头)
– 显示非注释行:grep –v # 目标文件
– 去除空行:grep –v ^$ 目标文件(^$匹配空行)
– 注意:–v后面不能连用匹配条件,所以如果要同时使用,需要管道
vim
- 文本编辑器。vim也具备创建功能。如果文本文件存在,vim它的路径会打开并编辑;如果文本文件不存在,创建并编辑。比如vim /opt/weird.txt,weird.txt不存在,vim就会创建一个叫weird的文本文件。但是vim只能创建文本文件,不能创建目录。
- 三个模式(相应模式进行相应动作,不能混着用):
- 命令模式:看文本
– 进入后初始状态直接就是命令模式。 - 插入模式(又称编辑模式/输入模式):修改文本
– 命令—>插入:i键
– 插入—>命令:Esc
– 命令—>插入:o键,和i的区别是o是从光标位置另起一行插入
– 光标跳转操作
– 复制、粘贴、删除操作
– 查找替换:/查找字符串
- 末行模式:保存并退出
– 命令—>末行:“:”键
– 末行—>命令:Esc
– 从末行保存并退出:wq
– 从末行不保存并退出:q!
– 文件操作
指令 作用
– 字符串替换
man [命令字]
- 查询某命令使用方法。如输入man alias就会获得一份详细的如何使用man的指南。
alias:简化复杂的命令。
- alias:查看所有已设置的别名
- alias 别名名称:查看已经设置的
- alias 别名名称=‘实际执行的命令’:定义新的别名(如alias hn=‘hostname’)
- unalias 别名名称:取消别名
- 注意事项
– 别名如果和系统名字冲突,系统会认你的。比如你起了ls = “poweroff”, ls就不是list而是poweroff - 设置永久别名:
– 影响一个用户:配置文件~/.bashrc(用户家目录里的隐藏文本文件bashrc),用vim在文件中加入命令行。但是更改配置文件不会立即生效,需要重新开启终端才可以。
– 影响全部用户:配置文件/etc/bashrc
复制,删除,移动(一般不能与管道连用)
- rm:删除,缩写remove。
– 格式:rm [选项] 文件或目录
– –r:递归删除(含目录),默认情况下不能删目录,加上–r才能删。
– –f:其实rm是一个系统里一个默认的别名,事实上是rm=’rm –i’,–i代表执行前询问。所以用rm直接删除文件,会在删之前询问是否删除。如果想强制删除(即不询问直接删除),就加上-f,因为rm里–f的优先级比–i高,所以可以生效。 - mv:移动,缩写move。
– 格式:mv [选项] 原文件 目标路径
– 如何用mv来重命名:mv 原名路径 重命名路径。这样操作即完成了一个路径不变的移动。如 mv /opt/nsd /opt/haha就是把/opt里的nsd改成了haha
– cp:abbr. copy。cp [选项] 原文件 目标路径
– 复制可以支持多个参数。永远把最后一个参数作为目标,其他的所有参数都作为源。
– 复制经常与点连用:一个点‘.’表示当前路径。如把/etc/shells拷贝到当前路径:cp /etc/shells .
– 出现重名:可以在cp前加\,意思是本次操作取消别名,即直接执行命令不询问。
– 注意事项:cp同样也是系统里默认的alias。cp=’cp –i’。但cp里–f优先级低于–i。\在其他是别名的命令上也可以使用。
重定向输出
- ‘>’:覆盖重定向。把前面命令输出的内容直接写入到文本文件。文件没有的话,会帮忙创建。如:hostname > /opt/ls.txt;ls –help > /opt/ls.txt
- ‘>>’:追加重定向。如果文本文件已经存在,>会覆盖原文本的内容,>>是把新文本贴到原文本文件后面
- 如:hostname >> /opt/ls.txt
echo
- 格式:echo [任意内容]。用户写什么就输出什么。
- 和重定向输出配合使用:例如echo 123456 >> /opt/ls.txt,就是把123456这一行加到ls.txt的最后面。
- echo经常会用来改密码之类的
|
- 管道操作。将前面命令的输出作为参数,交由后面命令处理。
- 如:head –12 /etc/passwd | tail –5 | cat –n。先择出来文本前12行,再挑选这12行的后5行,再给这些行编号输出。
- ifconfig | head –2:看第一块网卡的ip地址
- 和echo一起使用,可以用来改密码:如echo hahahaha | passwd --stdin natasha,就是把用户natasha的密码改成hahahaha的意思。
find
- 查找文件,根据预设的条件递归查找对应的文件。就好像是查字典的时候从头到尾翻,把所有查到的结果都返回来
- 格式:find [目录] [条件1] [条件2]…:可以有单个或多个条件。
- 常用条件
– –type类型 [f文件、d目录、l快捷方式]:查找全部文件or目录or快捷方式。如 find /etc –type f
– –name ‘字符串’:搜索名称带指定字符串的全部路径。如find /etc –name ‘passwd’
– –size +|–文件大小(k、M、G):找大于或小于指定大小的文件。如find /boot –size +10M
– –user 用户名:找所有该用户为所有者的内容。由于/proc内容不在磁盘上,所以搜索会报错
– mtime +|– 天数:根据文件修改时间。如find /root mtime +10(+代表最近n天)find /root mtime –30(–代表n天之前的数据)
– –exec操作:复制移动删除不能接受管道传来的参数,所以无法与find连用,–exec可以解决。格式:find命令 –exec 执行命令 {} 参数;。以{}代替find到的每一个结果,逐一处理,以;结束。如find /etc –name ‘passwd’ –exec cp {} /opt ;
systemctl
- systemctl restart 程序名:重启程序
- systemctl enable 程序名:开机自启动
wc
- wc –l 文件路径:统计文件有多少行