课堂笔记
1.操作系统宏观介绍
windows
Mac OS-类Unix,Itunes
- Unix system
- Unix BSD- Mac OS
- Unix like - Linux
服务器系统-Linux
- linux内核开发的手机操作系统android,connectbot可以远程连接android系统,运行命令
- linux的发行版 https://commons.wikimedia.org/wiki/File:Linux_Distribution_Timeline.svg
Debian----Ubuntu (2004)
Slackware --- Suse (1994)
Redhat ---Fedora (2002)
--- RHEL ---CentOS (2004, 2014被Redhat收购)
内核网站kernel.org,如何查看内核版本, # uname -r,查看内核版本,可以下载最新的内核安装到CentOS;# uname -a, 可以看出x86_64,64位的操作系统; # cat /ect/redhat-release
32位的系统最多识别3个G的内存
# cat /etc/motd
CentOS官网- centos.org;https://wiki.centos.org/download
2. 虚拟机的介绍
vmware是付费的,我们用的是vmware workstation;有些企业使用virtual box,多台服务器组成集成,进行迁移共享等等
3.安装系统
4.网络配置
# yum update,用来升级到最新CentOS版本
用NAT模式- 可能网络环境不支持桥接;可能网络环境会改变
#dhclient, 自动获得ip 地址, 如果不能获取,可能是vmware workstation网络设置有问题,重启windows, 在cmd中执行 service.fsc,查找vmware开头的设置,全部变成enabled
在虚拟机上选择编辑,选择虚拟网路编辑器,可以查看网关网段等信息,网关(可以当作路由器)可以改但不能用1 or 255
编辑网络配置文件,设置静态IP,再重启网络就OK啦
在云上购买云主机,IP地址就已经被设置好了,跟之前的公网IP有差异
network manager- # systemctl stop networkmanager --- # systemctl disable networkmanager
预习笔记
- 系统目录结构
ls /,可以查看root下的目录
可以看到 bin/boot/dev/ect/home/lib/lib64/mdia/mnt/opt/proc/root/run/sbin/srv/sys/tmp/usr/var
1. # ls
/root/ -为root用户的家目录,用来存储配置文件以及自己的应用
linux 也只是一个少用的操作系统,就好比是我们的Windows的系统,而linux我们经常看到的一些“公共、视频、文档、音乐、下载”等程序就好比 我们开机后所看到的桌面,看着是独立出来的一部分,实际上也就是C盘下面的一个文件夹,然后这个文件夹被用来做成了挂载目录而已,而实际上最重要的还是根目录/ 下面的那些文件属性,就是我们所看到C D E F 盘等等
根目录和家目录均只是一种linux文件挂载点,linux采用树状发展目录结构根目录就是第一级,家目录与根目录看起来只是一个一级目录和二级目录的关系,实际上差别很大。
家目录是系统傻瓜安装程序人为挂载的一个目录,便于多用户登录使用,你精通linux以后可挂任意的目录为家目录,比如/test,然后指定用户成为这个目录的owner,完成控制这个目录的功能。
简要的说,根目录是系统的一级文件结构,家目录只是非root用户控制目录,相当于windows我的文档,非root用户只能完会控制家目录的文件,不能控制根目录下其它的文件。
# tree 用于以树形的形式来目录下面的子目录,可用命令# yum install -y tree来安装
# tree --hep 可以用来查看#tree 命令的常用用法;也可以有# man (man page)来查看命令的使用方式, 例如# man tree
使用了# man tree之后我们可以看到 # tree -L 可以用来指定tree命令展示文件的层数/深度
3. # /bin/ or sbin or user/bin or user/sbin
软连接, 用来存储常用的命令like, vi/ ls/ tree etc.
bin 和 sbin的区别
sbin- 其用来存储只有root用户可用使用的命令,普通用户不可使用
bin- 存放了root用户和普通用户都可以使用的命令
4. # /boot/
为系统启动的相关文件
5. # /dev/
设备文件-光驱,硬盘,鼠标键盘等
6. # /etc/
系统配置文件,是Linux下的配置文件的老家, 很多管理和使用的修改都在这里。/etc/sysconfig/network-scripts/ifcfg-ens33
7.# /home/
用户的家目录文件
8. # / lib/ or lib64
库文件- ldd
# ldd /bin/xx 用来看xx命令依靠什么库文件
9. # ls /media
存放媒介,like USB
10. # ls /mnt
用于临时挂载文件,临时挂载的光驱以及硬盘等
11. / proc
系统启动的进程
12. /opt
存放一些特殊的安装软件,like Oracel
13. /run
存放进程产生的临时文件,一关机就会消失的文件
14/ser/
服务产生的文件
15. /sys/
系统内核相关的文件
16. /tmp/
系统的临时目录,任何用户都有权限进行修改
17. /usr/
/usr/local
存放用户的文件,应用程序目录。大部分的软件都安装在这里。就像是Windows里面的Program Files。
18. /var/local/ or message/
日志文件,经常会变动,硬盘读写率高的文件放在此中
1. # ls -l = # ll
列出文件的详细信息
总用量 4
-rw-------. 1 root root 1418 7月 14 07:20 anaconda-ks.cfg
- 第一列为文件的权限
- 第二列为有相同inode的文件数量
# ls -i file name, 查看文件的inode- 从根本上讲, inode 中包含有关文件的所有信息(除了文件的实际名称以及实际数据内容之外)
例如,用# ls -i anaconda-ks.cfg,可以看到inode号为33574978 anaconda-ks.cfg
● inode 编号
● 用来识别文件类型,以及用于 stat C 函数的模式信息
● 文件的链接数目
● 属主的ID (UID)
● 属主的组 ID (GID),涵盖多个用户
● 文件的大小
● 文件所使用的磁盘块的实际数目
● 最近一次修改的时间
● 最近一次访问的时间
● 最近一次更改的时间
- 第三列表示所有者
- 第四列表示所属组
- 第五列表示文件大小
# ls -lh naconda-ks.cfg(文件名), 可以显示文件大小
- 第六列文件创建时间
- 最后一列为文件名
2.# ls -a, 显示隐藏文件,红色方框标识出的带点的文件就为隐藏文件
# ls -la, 显示隐藏文件,并显示其详细信息(并包括创建时间等)- ls -a + ls -l = ls -la, 而# ls -a则只显示隐藏文件,并没有向信息
3. # ls -lta, 可以按时间顺序排列目录 - # ls -t
r-xr-x---. 3 root root 147 7月 14 13:03 .
dr-xr-xr-x. 17 root root 224 7月 14 15:25 ..
-rw-------. 1 root root 1418 7月 14 07:20 anaconda-ks.cfg
-rw-------. 1 root root 2602 7月 15 10:38 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
drwx------. 2 root root 80 7月 15 09:27 .ssh
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
一个点表示当前目录,两个点表示上级目录
4.# ls -ld /directory_name, 不会显示子文件、子目录,只列出目录本身; # ls -d 只列目录本身;#ls -l, 会列出目录下的子目录和子文件的信息
5. 文件类型
“d”开头 目录
“-”开头普通文件,文本文档以及二进制文件- 计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件(类似windows系统中.exe的文件)。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
可以用# cat 来查看文本文档文件, 二进制文件不可查看
‘c’开头字符串设备,例如鼠标键盘等,黄色文件,在/dev/下
“b”开头块设备,例如光驱光盘以及磁盘等
“l”开头软链接文件类似于windows的快捷文件
“s”开头?用来通信, 在/var/下面
1. # ls -l = # ll
列出文件的详细信息
总用量 4
-rw-------. 1 root root 1418 7月 14 07:20 anaconda-ks.cfg
- 第一列为文件的权限
- 第二列为有相同inode的文件数量
# ls -i file name, 查看文件的inode- 从根本上讲, inode 中包含有关文件的所有信息(除了文件的实际名称以及实际数据内容之外)
例如,用# ls -i anaconda-ks.cfg,可以看到inode号为33574978 anaconda-ks.cfg
● inode 编号
● 用来识别文件类型,以及用于 stat C 函数的模式信息
● 文件的链接数目
● 属主的ID (UID)
● 属主的组 ID (GID),涵盖多个用户
● 文件的大小
● 文件所使用的磁盘块的实际数目
● 最近一次修改的时间
● 最近一次访问的时间
● 最近一次更改的时间
- 第三列表示所有者
- 第四列表示所属组
- 第五列表示文件大小
# ls -lh naconda-ks.cfg(文件名), 可以显示文件大小
- 第六列文件创建时间
- 最后一列为文件名
2.# ls -a, 显示隐藏文件,红色方框标识出的带点的文件就为隐藏文件
# ls -la, 显示隐藏文件,并显示其详细信息(并包括创建时间等)- ls -a + ls -l = ls -la, 而# ls -a则只显示隐藏文件,并没有向信息
3. # ls -lta, 可以按时间顺序排列目录 - # ls -t
r-xr-x---. 3 root root 147 7月 14 13:03 .
dr-xr-xr-x. 17 root root 224 7月 14 15:25 ..
-rw-------. 1 root root 1418 7月 14 07:20 anaconda-ks.cfg
-rw-------. 1 root root 2602 7月 15 10:38 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
drwx------. 2 root root 80 7月 15 09:27 .ssh
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
一个点表示当前目录,两个点表示上级目录
4.# ls -ld /directory_name, 不会显示子文件、子目录,只列出目录本身; # ls -d 只列目录本身;#ls -l, 会列出目录下的子目录和子文件的信息
5. 文件类型
“d”开头 目录
“-”开头普通文件,文本文档以及二进制文件- 计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件(类似windows系统中.exe的文件)。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
可以用# cat 来查看文本文档文件, 二进制文件不可查看
‘c’开头字符串设备,例如鼠标键盘等,黄色文件,在/dev/下
“b”开头块设备,例如光驱光盘以及磁盘等
“l”开头软链接文件类似于windows的快捷文件
“s”开头?用来通信, 在/var/下面
1. # rm 命令 (remove)
用来删除文件件以及非空目录,
1)删除文件,# rm file path, 例如 “# rm /tmp/aminglinux/2/3/1.txt”, 按回车之后显示一个是否删除文件的提示,按“y”,选择yes, 即可删除文件
如果不想有此类提示,则可以加“-f (force)”命令,并且“*”表示通配符,当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
注:# ! command表示使用历史里面最近一次以command开头的命令, 例如# ! tree
# history, 可以查看命令历史
2)注意“# rm”只可删除文件不能删除目录,如若要删除目录及文件则使用“# rm -r (recursive)”
例子,如果我们在tmp的emmalinux中建立了1-2-3三个目录 (2为1的子目录,3为2的子目录),且2和3目录中各有一个txt文件,若想删除子目录2下面所有子目录以及文件,则可以使用“# rm -rfv /tmp/emmalinux/1/2”, 则可完成删除。删除顺序为先删除目录下的文件,再删除目录
注意用“-f”命令时,即使删除不存在的文件或目录也不会有提示,因此需格外注意
2. 环境变量 PATH
# echo $PATH 用来查看环境变量下的目录
PATH可以使我们快速的使用一个命令,可不需要敲入整个绝对路径,例如“# ls”命令在/usr/bin/ls下,而/usr/bin就在我们的环境变量下,因此当我们使用‘# ls’命令时,不需要敲入“/usr/bin/ls”, 而可以直接写“# ls”即可
1)系统默认下得PATH有五个目录- /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin,然而我们可以通过增加目录的方式对环境变量进行修改,例如我们copy了“# ls”命令到/tmp/ls2中- “# cp /usr/bin/ls /tmp/ls2”, 然而我们想快捷使用‘# ls2’命令时,我们可以用‘# PATH=$PATH:/tmp/’, 此时我们在用“# echo $PATH”就可以发现/tmp/目录被加到了PATH 下面,在用# ls2命令时,就可以了不需要输入“/tmp/ls2”.
2)如若我们想永久加入这个环境变量,则可以用“# vi /etc/profile”, 可以在每次开机都加载这个文件,按回车之后在最后加入命令“# PATH=$PATH /tmp/”即可,如果不想使用# ls2, 则我们可以用变量=想要的目录即可, eg, “# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin”, 不加/tmp/目录即可。
注:/etc/profile是用来存放每次开机都加载的文件或命令
3. ‘# cp’
1)命令可以用来copy文件,#cp filename target filename
2) 如若想要拷贝目录,则可‘# cp -r’,约定目录之后要加斜杠
注:# command !$, !$表示上一个命令的最后一个参数
3)直接用“# cp”是会有一个“-i”安全参数,例如执行命令之后询问是否覆盖已存在文件,如果不想被询问,则需输入绝对路径“/usr/bin/cp”
4. “# mv”(move)
可以用来改目录或者文件名字,也可以用来移动文件或目录到目标文件或目录中去。
当目标目录不存在时,直接改名字
5. 查看文本文档的命令
1)“# cat +文件名”查看文件内容的
# tac,可以倒叙查看文件内容
- -A
- -n,会显示文件内容的行号
2) “# more”也是查看文件内容,但是是按一屏一屏显示,按回车可以再看下一屏内容,返回上一屏再按ctrl b(back),想继续往下看是ctrl f(front)
注:
- # cat 文件名1 >> 文件名2,会把文件1的全部内容追加到文件2中去, head 文件1 >> 文件2-就是文件的头十行加到文件2,同样tail也适用。
“>>”为追加命令, tail -n 3 /etc/passwd >> 666.txt
2) # wc -l, 用来查看文件内容的行数
3)anaconda-ks.cfg是自动装系统的文件
3) “# less”的用法跟more相近,但less可以允许用方向键操作, 但看到结尾行时,需按q(quit)来退出,同时less有搜索关键字的功能,键入“/关键字”(顺序由前向后搜索)即可highlight出文件内容中的关键字,按“n”可以搜索下一个相同的关键字,往前看按shift n;键入“?关键字”搜索顺序为由后向前。输入shift g-G可定位到最后一行,输入g可以定位到第一行
4) # head, 用来查看一个文件的头十行;# tail,用来查看文件的后十行, # tail -f 可以查看动态文件,多用于查看log,用ctl c退出
注:head和tail都可以用“-n ”后面加行数可指定查看的行数
eg. # head -n 2 anaconda-ks.cfg
# tail -n 2 anaconda-ks.cfg
1. 文件或目录权限chmod
1)例如用# ls -l查看文件/目录具体信息
-rw-------. 1 root root 1418 7月 14 07:20 anaconda-ks.cfg
- 第一位代表文件类型 -普通文件类型
- 最后一位绿色的点,表明文件此时受制于selinux。 vi /etc/selinux/config用来改写selinux的设置
- 粉色highlight的后9为代表了权限,分文三段;r-read, w-write, x-执行
rw-: 所有者的权限
---:表示所属组的权限,例子中的所属组没有可读可写可执行的权力
---:表示非同组用户的权限
2)权限也可用数字表示- r=4; w=2; x=1
-rwx=7 rw-=6 --x=1 例如rw-r--r--用数字表示则为644,再如rw-r-xr-x则为655
3)# chmod (change mode), 用来改变权限,命令结构为chmod 有三位数字表示的权限 文件的路径
例如# chmod 700 /tmp/emmalinux1改权限
4)# chmod 只可以改变一个文件或一个目录的权限,如若想批量改变目录下子目录或子文件的权限则可用“# chmod -R”
5) # chmod 754 的命令也可写成 chmod u(user)=rwx,g(group)=rx,o(other)=r
6) # chmod a(all)+-r/w/x, 可意味着所有的权限为加减权限属性
7)# chmod u/g/o+-r/w/x, 用法跟2)的用法异曲同工
2. # chown (change owner)
1)改变所有者
用# cat /etc/passwd, 可以看到系统的用户,之前有创建emma1和emma2用户,# chown username file name, 可以改变文件的所有者,如下图所示
2) # chgrp (change group),用法和chown大同小异
3)# chown也可以改所属组,# chown user name:group name /file/, 同时user name和group name可空,只改填写的部分
4)# chown -R user name:group name /file/, 可用于批量更改目录以及目录下得子文件子目录的所属者和所属组
3. # umask 用来确定默认目录和文件权限
输入# umask, 看到“0003”这个数值,则可知道默认文件目录的默认权限分别为664、774,具体算法如下
1)文件: 666-003 - rw-rw-rw - -------wx= rw-rw-r--=664
2)目录:777-003 - rwxrwxrwx - -------wx=rwxrwxr--=774
则再次创建文件或目录是在umask数值为003的条件下,权限值则为664/774
注: 若- 减去r/w/x值都为-(0)
“x”权限,目录必须有执行权限才可以打开,所以目录的算法使用777来算