Linux系列笔记
Linux(一)Linux入门及相关软件安装配置.
Linux(二)实用指令.
Linux(三)Linux(权限、任务调度、分区、网络配置、进程管理).
文章目录
第 9 章组管理和权限管理
9.1Linux组基本介绍
- 在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
- 所有者:指这个文件是谁的
- 所在组:指这个文件归属于哪个组
- 其它组:除去所在组的所有组
- 改变用户所在的组
9.2文件/目录的所有者
- 一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
9.2.1查看文件的所有者
- 指令:ls -ahl
- 应用实例 :创建一个组police,再创建一个用户tom,将tom放在police组 ,然后使用 tom来创建一个文件 ok.txt,看看情况如何
9.2.2修改文件所有者
- 指令:chown 用户名 文件名
- 应用案例
要求:使用root 创建一个文件apple.txt ,然后将其所有者修改成 tom
9.3文件/目录的所在组
9.3.1修改文件所在的组
- 基本指令
chgrp 组名 文件名 - 应用实例
使用root用户创建文件 orange.txt ,看看当前这个文件属于哪个组【root】,然后将这个文件所在组,修改到 police组。
chgrp police orange.txt
9.3.2改变用户所在组
- 在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
- 改变用户所在组
- usermod –g 组名 用户名
- usermod –d 目录名 用户名 改变该用户登陆的初始目录。
- 应用实例
创建一个土匪组(bandit)将 tom 这个用户从原来所在的police组,修改到 bandit(土匪) 组
Usermod -g bandit tom
9.4权限的基本介绍
-
在Tom文件下输入ls -l 中显示的内容如下:
-rw-r–r--. 1 tom police 0 6月 8 14:29 ok.txt
0-9位说明 -
第0位确定文件类型(说明: -:普通文件, d:目录,l : 连接文件, c: 字符设备文件[键盘,鼠标] b: 块设备文件[硬盘] )
-
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。r: 读 , w : 写权限 x: 执行权限
-
第4-6位确定所属组(同用户组的)拥有该文件的权限
-
第7-9位确定其他用户拥有该文件的权限
-
1: 如果是文件,表示硬链接的数目, 如果是目录,则表示有多少个子目录
-
1213: 表示文件大小,如果是目录,则统一为 4096
9.5rwx权限详解
9.5.1rwx作用到文件(重要)
- [ r ]代表可读(read): 可以读取,查看
- [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被执行
还可以用数字表示:r=4,w=2,x=1 因此rwx=4+2+1=7
9.5.2rwx作用到目录(重要)
- [ r ]代表可读(read): 可以读取,ls查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
还可以用数字表示:r=4,w=2,x=1 因此rwx=4+2+1=7
9.6修改权限-chmod
- 基本说明:
通过chmod指令,可以修改文件或者目录的权限 - 第一种方式:+ 、-、= 变更权限
u:所有者 g:所在组 o:其他人 a:所有人(u、g、o的总和)- chmod u=rwx,g=rx,o=x 文件、目录 【表示:给所有者rwx, 给所在组的用户 rx, 给其他人 x】
- chmod o+w 文件、目录 【表示:给其它用户增加w 的权限】
- chmod a-x 文件、目录 【表示:给所有用户 去掉 x权限】
- 案例演示
- 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
2) 给abc文件的所有者除去执行的权限,增加组写的权限
3) 给abc文件的所有用户添加读的权限
-
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件、目录
相当于 chmod 751 文件、目录 -
案例演示
要求:将 /home/hello.txt文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
9.7修改文件所有者-chown
9.7.1基本介绍
-
chown newowner file 改变文件的所有者
-
chown newowner:newgroup file 改变用户的所有者和所有组
-
-R 如果是目录 则使其下所有子文件或目录递归生效
-
案例演示:
1)请将 /home/a.txt 文件的所有者修改成 tom
2)请将 /home/kkk 目录下所有的文件和目录的所有者都修改成tom
将home下的所有文件和目录的所有者都改成 tom,将所在组改成police
9.8修改文件所在组-chgrp
9.8.1基本介绍
- chgrp newgroup file 改变文件的所有组
9.8.2案例演示:
- 1)请将 /home/abc .txt 文件的所在组修改成 shaolin (少林)
chgrp shaolin /home/abc.txt - 2)请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin(少林)
chgrp -R shaolin /home/kkk
9.9最佳实践-警察和土匪游戏
police , bandit
jack, jerry: 警察
xh, xq: 土匪
(1)创建组
groupadd police
groupadd bandit
(2)创建用户
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
设置密码:以jack举例
(3) jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
(4) jack 修改该文件,让其它组人可以读, 本组人可以读写
5) xh 投靠 警察,看看是否可以读写
我们首先探讨下xh进入jack目录吗?
如果把xh转到警察组呢?(用root用户改变xh所在组,xh自己无法修改)
发现还是不行
因为jack对所在组都没有权限,于是我们可以用jack用户设置对所在组可访问
但发现xh还是没权限
这里我们其实是有权限的,为什么还是进不去呢?其实我们这个是需要注销重新登录xh用户就可以了
此时xh用户对jack里的jack01.txt文件可进行读写操作
第10章 定时任务调度
10.1crond 任务调度
- crontab 进行 定时任务的设置
10.1.1 概述
- 任务调度:是指系统在某个时间执行的特定的命令或程序。
- 任务调度分类:
- 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
- 2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
10.1.2 基本语法
- crontab [选项]
10.1.3 常用选项
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户所有的crontab定时任务 |
10.1.4快速入门
- 设置任务调度文件:/etc/crontab
- 设置个人任务调度。执行crontab –e命令。
- 接着输入任务到调度文件
- 如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
- 意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt命令
10.1.5参数细节说明
- 5个占位符的说明
10.1.6应用实例
案例1:每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate.log 文件中
- 方法一使用shell脚本文件:
1)先编写一个文件,/home/mytask1.sh,里面写:
date >> /tmp/mydate.log
2)给mytask1.sh可执行权限
3)crontab -e
4)*/1 * * * * /home/mytask1.sh
- 方法二:直接使用crontab -e
1)crontab -e
2)编写内容:*/1 * * * * date >> /tmp/mydate.log
案例2:每隔1分钟, 将当前日期和日历都追加到 /tmp/mycal.log 文件中
1)先编写一个文件,/home/mytask2.sh,里面写:
date >> /tmp/mycal.log
cal >> /tmp/mycal.log
2)给mytask2.sh可执行权限
3)crontab -e
4)*/1 * * * * /home/mytask2.sh
5)成功,
注意: 一定给 sh 脚本的执行权限.
案例3: 每天凌晨2:00 将mysql数据库 testdb ,备份到文件mydb.bak中。
1)先编写一个文件,/home/mytask3.sh,里面写:
/usr/local/mysql/bin/mysqldump -u root -p123456 testdb > /tmp/mydb.bak
2)给mytask3.sh可执行权限
3)crontab -e
4)0 2 * * * /home/mytask3.sh
5)成功
第 11 章Linux磁盘分区、挂载
11.1分区的基本知识
11.1.1分区的方式(知道即可):
-
mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性 -
gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64位以后支持gtp
11.1.2windows下的磁盘分区
11.2Linux分区
11.2.1原理介绍
- 1)Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
- 2)Linux采用了一种叫“载入(mount)”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
- 3)示意图【分区和文件目录】
有mount挂载、umount卸载
11.2.2硬盘说明
- Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
- 对于IDE硬盘,驱动器标识符为“hdx~ ”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
- 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。sdb1 [表示第2块scsi 硬盘的第1个分区]
11.2.3查看所有设备(光驱 /media,u盘, 硬盘)挂载情况
使用指令lsblk(不好记,可记老师不离开)来查看系统的分区和挂载情况或用lsblk -f也行
11.3挂载的经典案例
11.3.1说明:
- 下面我们以增加一块硬盘1G 并且挂载到/home/newdisk为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念
11.3.2增加一块硬盘的步骤
- 1)虚拟机添加硬盘
- 增加一块硬盘 1G [到设置中添加一块硬盘即可]
- 在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
- reboot重启一下服务器
lsblk指令后发现未分区
- 增加一块硬盘 1G [到设置中添加一块硬盘即可]
- 2)分区
- 分区命令 fdisk /dev/sdb
- 开始对/sdb分区
m 显示命令列表
p 显示磁盘分区 同 fdisk –l
n 新增分区
d 删除分区
w 写入并退出
说明: 开始分区后输入n,新增分区,然后选择p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
- 3)格式化
- 分区命令:mkfs -t ext4 /dev/sdb1
- 其中ext4是分区类型
- 4)挂载
- 先创建一个目录/home/newdisk(用mkdisk指令即可)
- 挂载: 将一个分区与一个目录联系起来,
mount 设备名称 挂载目录
例如: mount /dev/sdb1 /home/newdisk - 注意:上面的挂载方式只是临时挂载,一旦重启就会失效,所以设置自动挂载可实现永久挂载(重启之后也自动挂载)
- 5)设置可以自动挂载
- 通过修改/etc/fstab实现挂载 (用vim指令)
- vim /etc/fstab
- 在里面添加内容:/dev/sdb1 /home/newdisk ext4 defaults 0 0
- 添加完成后 执行mount –a 即刻生效
- 通过修改/etc/fstab实现挂载 (用vim指令)
- 我们要向卸载怎么操作
- umount 设备名称 或者 挂载目录
例如: umount /dev/sdb1 或者 umount /home/newdisk
- umount 设备名称 或者 挂载目录
11.4磁盘情况查询
11.4.1查询系统整体磁盘使用情况
- 基本语法
df -h - 应用实例
- 查询系统整体磁盘使用情况
- 查询系统整体磁盘使用情况
11.4.2查询指定目录的磁盘占用情况
- 基本语法
du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值 - 应用实例
查询 /usr目录的磁盘占用情况,深度为1
du -ach --max-depth= 1 /usr
11.5磁盘情况-工作实用指令
- 1)统计/home文件夹下文件的个数
ls –l /home/ | grep “^-” | wc -l
- 2)统计/home文件夹下目录的个数
ls –l /home/ | grep “^d” | wc -l
- 3)统计/home文件夹下文件的个数,包括子文件夹里的
ls –lR /home/ | grep “^-” | wc -l
- 4)统计/home文件夹下目录的个数,包括子文件夹里的
ls –lR /home/ | grep “^d” | wc -l
以树状显示home目录结构 [没有tree指令咋办, 使用yum 来安装]
先安装
yum install tree
第 12 章linux的网络配置
12.1查看网络IP和网关
12.1.1查看虚拟网络编辑器
12.1.2修改ip地址(修改vmnet虚拟网卡的ip)
12.1.3查看网关
12.2linux网络环境配置
- ping 测试主机之间网络连通性
- 基本语法:ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
12.2.1第一种方法(自动获取)
- 说明
1)配置比较简单
2)每次启动linux后,分配的ip地址可能不一样。不适合做服务器
12.2.2第二种方法配置固定的ip地址
- 说明
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐),编辑 vim /etc/sysconfig/network-scripts/ifcfg-eth0
要求:将ip地址配置的静态的,ip地址为192.168.199.129(自己指定)
- 如果希望配置生效
1)reboot
2)service network restart // 重启网络服务
12.2修改主机名
- 1)查看当前主机名
hostname - 2)修改linux的主机映射文件
vim /etc/sysconfig/network
文件中内容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop //写入新的主机名
注意:主机名称不要有“_”下划线 - 3)修改 /etc/hosts 增加ip和主机的映射
192.168.102.130 hadoop
… - 4)并重启设备,生效.
- 5)如果希望windows也可以通过主机名来连接centos, 进入C:\Windows\System32\drivers\etc\hosts 192.168.199.129 hadoop01
第 13 章进程管理(重点)
13.1基本介绍
- 1)在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
- 2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
- 3)每个进程都可能以两种方式存在的。前台 与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行[sshd , crond]。
- 4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
13.1.1显示系统执行的进程
- ps -aux // 显示所有的进程
- ps -aux | grep sshd //查看sshd进程
- 查看进程的父进程。
ps -ef是以全格式显示当前所有的进程
-e 显示所有进程。-f 全格式
13.1.2ps详解
- 指令:ps –aux|grep xxx ,比如我看看有没有sshd服务
- 指令说明
- System V展示风格
- USER:用户名称
- PID:进程号
- %CPU:进程占用CPU的百分比
- %MEM:进程占用物理内存的百分比
- VSZ:进程占用的虚拟内存大小(单位:KB)
- RSS:进程占用的物理内存大小(单位:KB)
- TTY:终端名称,缩写 .
- STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
- STARTED:进程的启动时间
- TIME:CPU时间,即进程使用CPU的总时间
- COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
13.2终止进程kill和killall
13.2.1介绍:
- 若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
13.2.2基本语法:
- kill [选项] 进程号(功能描述:通过进程号杀死进程 -9 强制终止)
- killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
13.2.3常用选项:
- -9 :表示强迫进程立即停止
13.2.4最佳实践:
-
案例1:踢掉某个非法登录用户【jack】
-
案例2: 终止远程登录服务sshd, 在适当时候再次重启sshd服务
-
案例3: 终止多个gedit 编辑器
killall gedit
13.3查看进程树pstree
13.3.1基本语法:
- pstree [选项] ,可以更加直观的来看进程信息
13.3.2常用选项:
-p :显示进程的PID
-u :显示进程的所属用户
13.3.3应用实例:
案例1:请用树状的形式显示进程的pid
案例2:请用树状的形式显示进程的用户id
13.4服务(service)管理
- 介绍:
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。 - service管理指令:
service 服务名 [start | stop | restart | reload | status]
在CentOS7.0后 不再使用service ,而是 systemctl - 使用案例:
- 查看当前防火墙的状况,关闭防火墙和重启防火墙。
-
细节讨论:
关闭或者启用防火墙后,立即生效。
service iptables stop , service iptables start
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令 -
查看服务名:
方式1:使用setup -> 系统服务 就可以看到。
方式2: /etc/init.d/服务名称 【程序】
-
chkconfig指令
- 应用实例:
- 案例1: 请显示当前系统所有服务的各个运行级别的运行状态 chkconfig --list
- 案例2 :请查看sshd服务的运行状态
chkconfig sshd --list 或者 chkconfig --list | grep sshd
- 案例3: 将sshd 服务在运行级别5下设置为不自动启动,看看有什么效果?
chkconfig --level 5 sshd off
- 案例4: 当运行级别为5时,关闭防火墙。
chkconfig --level 5 iptables off - 案例5: 在所有运行级别下,关闭防火墙
chkconfig iptables off - 案例6: 在所有运行级别下,开启防火墙
chkconfig iptables on
- 使用细节
- chkconfig重新设置服务后自启动或关闭,重启机器就会按设置的状态运行.
13.5动态监控进程
13.5.1介绍:
- top与ps命令很相似。它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)。
13.5.2基本语法
- top [选项]
13.5.3选项说明:
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令: |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
- top 指令的说明
- 交互操作指令
选项 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序。 |
N | 以PID排序 |
Q | 退出top |
- 应用实例:
-
案例1.如何监视特定用户,top:输入此命令,按回车键,查看执行的进程。u:然后输入“u”回车,再输入用户名,即可
-
案例2:如何终止指定的进程。top:输入此命令,按回车键,查看执行的进程。k:然后输入“k”回车,再输入要结束的进程ID号
-
案例3:指定系统状态更新的时间(每隔10秒自动更新,默认是3秒):
top -d 10
-
13.6监控网络状态(重要)
-
查看系统网络情况netstat(重要)
-
基本语法
netstat [选项] -
选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用 -
应用案例
- 请查看服务名为 sshd 的服务的信息。
Netstat –anp | grep sshd
- 如果我们希望查看当前系统有哪些端口在监听
netstat -tlnp
- 请查看服务名为 sshd 的服务的信息。
第 14 章rpm 和 yum软件安装
14.1rpm包的管理
14.1.1介绍:
- 一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
- Linux的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
14.1.2rpm包的简单查询指令:
- 查询已安装的rpm列表 rpm –qa|grep xx
- 请查询一下,当前的Linux有没有安装firefox
rpm -qa | grep firefox
14.1.3rpm包名基本格式:
- 以上面查询火狐为例:
- 一个rpm包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用操作系统: el6.centos.x86_64 表示centos6.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用。。
14.1.4rpm包的其它查询指令:
-
rpm -qa :查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep X [rpm -qa | grep firefox ] -
rpm -q 软件包名 :查询软件包是否安装
rpm -q firefox -
rpm -qi 软件包名 :查询软件包信息
rpm -qi file
-
rpm -ql 软件包名 :查询软件包中的文件
rpm -ql firefox -
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
14.1.5卸载rpm包
-
基本语法
rpm -e RPM包的名称 -
应用案例
删除firefox 软件包
rpm -e firefox -
细节讨论
- 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
如: rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1 - 如果我们就是要删除 foo这个rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行
如: rpm -e --nodeps foo [小心使用]
14.1.6安装rpm包
- 基本语法
rpm -ivh RPM包全路径名称 - 参数说明
i=install 安装
v=verbose 提示
h=hash 进度条 - 应用实例
演示安装firefox浏览器
先找到firefox安装包,你需要挂在上我们安装centos的iso(镜像)文件,然后到/media/下去找rpm
提示:很多的rpm包,就在我们的centos安装的镜像文件中
第一步:拷贝
第二步:拷贝完之后就可以安装了
14.2yum的使用
- 介绍:
Yum 是一个Shell 前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。(安装前提是联网) - yum的基本指令
查询yum服务器是否有需要安装的软件
yum list | grep xx 软件列表
安装指定的yum包
yum install xxx 下载安装 - yum应用实例:
案例:请使用yum的方式来安装firefox指令
Yum install firefox //会自动的下载适合你系统的最新版本