基础学习1"/>
Linux基础学习1
10. Linux实操篇-组管理和权限管理
10.1 Linux 组基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有 所有者、所在组、其它组的概念。
1) 所有者
2) 所在组
3) 其它组
4) 改变用户所在的组
10.2 文件/目录所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
查看文件的所有者
ls -ahl
修改文件所有者
chown 用户名文件名要求:使用root创建-一个文件apple.txt,然后将其所有者修改成tomchown tom apple.txt
10.3 组的创建
基本指令
groupadd 组名
应用实例:
创建一个组,monster
groupadd monster创建一个用户fox并放入到monster组中
useradd -g monster f
10.4 文件/目录 所在组
ls -ahl
修改文件/目录所在的组
chgrp 组名 文件名
实例:使用root 用户创建文件orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到fruit组。
1. groupadd fruit
2. touch orange.txt
3.看看当前这个文件属于哪个组-> root组
4. chgrp fruit orange.txt
10.5 其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
10.6 改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
改变用户所在组
usermod -g 新组名 用户名
usermod -d 目录名 用户名
改变该用户 登陆的初始目录。
特别说明: 用户需要有进入到新目录的权限。
将zwj这个用户从原来所在组,修改到wudang组
usermod -g wudang zwj
10.7权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- l root root 1213 Feb 2 09:39 abc,
0-9位说明:
第0位确定文件类型(d,-,1,c,b)
l是链接,相当于windows的快捷方式
d是目录,相当于windows的文件夹
c是字符设备文件,鼠标,键盘
b是块设备,比如硬盘
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。--User
第4-6位确定所属组(同用户组的)拥有该文件的权限,--Group
第7-9位确定其他用户拥有该文件的权限--Other
10.8 rwx权限详解
rwx 作用到文件
1) [ r ] 代表可读(read): 可以读取,查看。
2) [ w ] 代表可写(write):可以修改,但是不代表可以删除该文件,删除一个 文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
3) [ x ] 代表可执行(execute):可以被执行
rwx 作用到目录
1) [ r ] 代表可读(read): 可以读取,ls查看目录内容
2) [ w ] 代表可写(write):可以修改,对目录内创建+删除+重命名目录
3) [ x ] 代表可执行(execute):可以进入该目录
10.9文件及目录权限实际案例
ls -l 中显示的内容如下:
-rwxrw-r-- l root root 1213 Feb 2 09:39 abc
第一个字符代表文件类型: - l d c b
其余字符每3个一组(rwx)读(r) 写(w)执行(x)
第一组rwx:文件拥有者的权限是读、写和执行
第二组rw-:与文件拥有者同一组的用户的权限是读、写但不能执行
第三组r--:不与文件拥有者同组的其他用户的权限是读不能写和执行
l 文件:硬连接数或目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096 字节
Feb 2 09:39 最后修改日期
abc 文件名
10.10修改权限-chmod
通过chmod指令,可以修改文件或者目录的权限。
第一种方式:+、-、=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
1) chmod u=rwx,g=rx,o=x 文件/目 录名
2) chmod o+w 文件/目录名
3) chmod a-x 文件/目 录名
案例演示1)给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。chmod u=rwx ,g=rx,o=rx abc2)给abc文件的所有者除去执行的权限,增加组写的权限chmod u-x g+w abc3)给abc文件的所有用户添加读的权限chmod a+r abc
第二种方式:通过数字变更权限
r=4 w=2 x= 1,rwx=4+2+1=7
chmod u=rwx, g=rx,o=x 文件目录名
相当于 chmod 751 文件/目录名
10.11修改文件所有者-chown
改变所有者:
chown newowner 文件/目录
改变所有者和所在组:
chown newowner:newgroup 文件/目录
-R 如果是目录则使其下所有子文件或目录递归生效
案例演示1)请将/home/abc.txt文件的所有者修改成tomchown tom /home/abc.txt2)请将/home/test目录下所有的文件和目录的所有者都修改成tomchown -R tom/home/test
10.12修改文件/目录所在组-chgrp
chgrp newgroup 文件/目录 [改变所在组]
请将/home/abc.txt文件的所在组修改成shaolin (少林)groupadd shaolinchgrp shaolin/home/abc.txt请将/home/test目录下所有的文件和目录的所在组都修改成shaolin(少林)chgrp -R shaolin/home/test
11.Linux实时操作-定时任务调度
crond 任务调度
crontab进行定时任务的设置
概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
个别用户工作:个用户可能希望执行某些程序,比如对mysql数据库的备份。
示意图
crontab [选项]
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户所有的crontab任务 |
service crond restart 重启任务调度
快速入门
设置任务调度文件:/etc/crontab
案例:每小时每分钟执行一次 ls -l /etc/ > /tmp/to.txt
crontab -e
*/1 * * * * ls -l /etc/ -> /tmp/to.txt
5个占位符的说明
项目 | 含义 |
---|---|
第一个* | 一小时中的第几分钟 |
第二个* | 一天中的第几小时 |
第三个* | 一个月的第几天 |
第四个* | 一年中的第几月 |
第五个* | 一周中的星期几 (0,7都代表周日) |
特殊符号 | 含义 |
---|---|
* | 代表任何时间,如第一个*代表一小时中的每一分钟 |
, | 代表不连续的时间,如0 8,12,16 * * *代表每天的8:00,12:00,16:00执行一次 |
- | 代表连续的时间范围,如0 5 * * 1-6代表周一到周六的5:00执行一次 |
*/n | 代表每隔多久执行一次,如*/10 * * * *代表每10分钟执行一次 |
应用案例
1、每隔1分钟,将当前的日期信息追加到/tmp/mydate中
*/1 * * * * date >> /tmp/mydate/
2、每隔1分钟,将当前日期和日历都追加到/tmp/mycal中
vim /home/my.sh写入 date >> /tmp/mycal和cal >> /tmp/mycal
chmod u+x /tmp/my.sh 给my.sh增加执行权限
crontab -e并写入 */1 * * * * /home/my.sh
3、每天2:00将mysql数据库testdb备份到文件中
crontab -e
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
11.1.6 crond相关指令
conrtab -r:终止任务调度。
crontab -1: 列出当前有那些任务调度
service crond restart [重启任务调度]
at定时任务
基本介绍
at命令是一次性定时计划任务。at的守护进程atd会以后台模式运行,检查作业队列,时间到了就运行此作业。
使用at命令时,一定要确保atd进程的启动。
//检测atd是否在运行
(ps -ef | grep atd)
at 命令格式
at [选项] [时间]
ctrl+d 结束at命令的输入,输出两次
at [-mldv] TIME
at指定时间的方法:
1) 接受在当天的hh:mm (小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如: 04:002)使用 midnight (深夜),noon (中午),teatime (饮茶时间,一般是 下午4点)等比较模糊的词语来指定时间。
3)采用 12 小时计时制,即在时间后面加上AM (上午)或PM (下午)来说明是上午还是下午。例如: 12pm
4)指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy (月/日/年)或dd.mm.yy (日.月.年),指定的日期必须跟在指定时间的后面。例如: 04:00 2021-03-1
5)使用相对计时法。指定格式为:now+counttime-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours (小时)、days (天)、weeks (星期)。count 是时间的数量,几天,几小时。例如: now + 5 minutes
6)直接使用 today (今天)、tomorrow (明天)来指定完成命令的时间。
12.Linux磁盘分区、挂载
12.1 分区与文件系统
- Linux中每个分区都是用来组成整个文件系统的一部分
- Linux采用了一种叫做"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时,要载入的一个分区将使它的存储空间在一个目录下获得。
查看所有设备挂载情况
lsblk
lsblk -f
1) Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2) 对于IDE硬盘,驱动器标识符为"hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“一”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3 表示为第-一个 IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3)对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法
12.2 增加一块硬盘
1)虚拟机添加硬盘
在[虚拟机]菜单中,选择[设置],然后设备列表里添加硬盘,然后一路[下-步],中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别) !
分区
分区命令
fdisk /dev/sdb
2)开始对/sdb分区
m 显示命令列表
p 显示磁盘分区同fdisk -l
n 新增分区
d 删除分区
w 写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
3)格式化格式化磁盘
分区命令:
mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
4)挂载
挂载:将一个分区与一个目录联系起来,
mount 设备名称 挂载目录
例如:
mount /dev/sdbl /newdisk
卸载
umount 设备名称或者挂载目录
umount /dev/sdb1 或者 umount /newdisk
用命令行挂载,重启后会失效
5)设置可以自动挂载
永久挂载:通过修改/etc/fstab实现挂载
添加完成后执行
mount -a
12.3磁盘情况查询
查询系统整体磁盘使用情况
df -h
查询指定目录的磁盘占用情况
du -h
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth= 1 子目录深度
-c 列出明细的同时,增加汇总值
12.4 磁盘工作实用指令
统计/opt文件夹下文件的个数
ls -l /opt | grep "^-" | wc -l
统计/opt文件夹下目录的个数
ls -l /opt | grep "^d" | wc -l
统计/opt文件夹下文件的个数,包括子文件夹里的
ls -lR /opt | grep "^-" | wc -l
统计/opt文件夹下文件的个数,包括子文件夹里的
ls -lR /opt | grep "^d" | wc -l
以树状显示目录结构
tree /home/如果没有tree指令,使用yum install tree
13、网络配置
查看linux的网络配置
# linux
ifconfig
# Windows
ipconfig
ping 测试主机之间网络连通性
ping 目的主机
ping www.baidu
linux 网络环境配置
第一种方法(自动获取)
说明:登陆后,通过界面的来设置自动获取ip,特点:linux启动后会自动获取IP,
缺点是每次自动获取的ip地址可能不一样
第二种方法(指定 ip)
说明:直接修改配置文件来指定IP,并可以连接到外网
vim /etc/sysconfig/network-scripts/ifcfg ens33
要求:将ip地址配置的静态的,比如: ip地址为192. 168.200.130
ifcfg-ens33文件说明
EVICE=eth0 #接口名(设备,网卡)
HWADDR=00:0C:2x:6x:0x:xx #MAC地址
TYPE=Ethernet #网络类型(通常是Ethemet)
UUID=926a57ba-92c6-4231-bacb-f27e5e6a9f44 #随机 id
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT=yes
# IP的配置方法[none|static|bootp|dhcp] (引导时不使用协议|静态分配IPIBOOTP协议|DHCP协议)
BOOTPROTO= =static
#IP地址
IPADDR= : 192.168.200.130
#网关
GATEWAY=192.1 68.200.2
#域名解析器
DNS1=192.168.200.2
重启网络服务或者重启系统生效
service network restart
reboot
设置主机名和host映射
设置主机名
- 为了方便记忆,可以给linux主机设置主机名
- 指令 hostname 查看主机名
- 修改文件 /etc/hostname,可以指定主机名
- 修改后,重启生效 reboot
设置hosts映射
- windows下
- 在C:\Windows\System32\drivers\etc\hosts文件指定
- linux下
- 在/etc/hosts/文件指定
机名解析过程分析
Hosts
一个文本文件。记录 IP 和 Hostname (主机名)的映射关系
DNS
Domain Name System 域名系统
互联网上作为域名和IP地址相互映射的一个分布式数据库
机制分析
用户在浏览器输入了www.baidu
1、浏览器先检查浏览器缓存中有没有该域名解析IP地址,再检查DNS解析器缓存。二者都可以理解为本地解析器缓存。
2、计算机第一次成功访问某一网站后,一定时间内。浏览器或操作系统会缓存DNS解析记录
ipconfig /displaydns 查看dns域名解析缓存ipconfig /flushdns 手动清理dns缓存
3、如果本地解析器缓存中没有找到,那么检查系统的hosts文件。
4、如果本地DNS解析器缓存和host文件都未找到,那么到域名服务DNS进行解析。
14、进程管理
- 在Linux中,每个执行的程序都称作一个进程。每个进程都分配一个 ID 号(pid)
- 每个进程都可能以两种方式存在(前台/后台)。前台进程就是用户目前的屏幕上可以操作的。后台进程就是实际在操作,但是屏幕上无法看到。
- 一般系统的服务都以后台进程的方式存在,并且常驻在系统中,直至关机。
显示系统执行的进程
ps命令用来查看目前系统中,有哪些正在执行,以及他们执行的状况
ps显示的信息
字段 | 说明 |
---|---|
PID | 进程ID |
TTY | 终端机号 |
TIME | 此进程消耗的CPU时间 |
CMD | 正在执行的命令或进程名 |
ps的参数
ps -a
显示当前终端所有进程信息ps -u
以用户的形式显示进程信息ps -x
显示后台进程运行的参数
ps -aux | more
USER:执行进程的用户
PID:进程ID
%CPU:占用CPU的百分比
%MEM:占用物理内存的百分比
VSZ:占用虚拟内存(KB);
RSS: 占用物理内存(KB)TTY:终端名称
STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D短期等待,Z-僵死进程,T-被跟踪或者被停止等等
START:进程启动时间
TIME:占用的CPU时间
COMMAND:进程名/执行该进程时的指令
终止进程
kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (通过进程名称杀死进程,支持通配符)
常用选项:-9
强迫进程立刻停止
查看进程树pstree
pstree [选项]
常用选项
-p
显示pid-u
显示进程所属用户
服务管理
服务本质就是后台进程,通常都会监听某个端口,等待其他程序的请求。
比如mysqld,sshd,防火墙等,又称为守护进程
service管理指令
service 服务名 [start|stop|restart|reload|status]
- 在centos7后,很多服务不使用
service
,而是systemctl
service
指令管理的服务在etc/init.d
查看
查看服务名
- 直接输入
setup
,可以看到全部服务
*号表示自启动ls -l /etc/init.d/
可以看到service
指令管理的服务
服务的运行级别
Linux系统的7种运行级别
0:关机
1:单用户【可找回丢失密码】
2:多用户状态,无网络服务
3:多用户状态,有网络服务,控制台界面
4:系统未使用,保留给用户
5:图形界面
6:系统重启
开机流程说明
开机->BIOS->/boot->systemd进程1->运行级别->启动此运行级别对应的服务
chkconfig
- 通过
chkconfig
可以给服务的各个运行级别设置自启动/关闭chkconfig
能够管理的服务在etc/init.d/
查看- centos7后,很多服务使用
systemctl
管理
chkconfig --list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
chkconfig --list | grep network
使用细节:
- 使用
chkconfig
后,重启生效
systemctl
- 基本语法:
systemctl [start|stop|restart|status] 服务名
systemctl
指令管理的服务在/usr/lib/systemd/system
查看
设置服务自启动状态
- systemctl list-unit-files [|grep 服务名]查看服务自启动状态
- systemctl enable 服务名设置开机启动
- systemctl disable 服务名关闭开机启动
- systemctl is-enabled 服务名查询某个服务是否自启动
查看当前防火墙的状况
systemctl status firewalld
关闭/重启防火墙
systemctl stop/restart firewalld
细节讨论
- 关闭或启用防火墙,会立刻生效。可以使用
telnet
测试
指定IP和端口的连接telnet ip:port
- 这种方式仅临时生效,重启后回归以前的设置。
- 如果希望永久生效,使用
systemctl [enable|disable] 服务名
firewall
firewall-cmd --permanent --add-port = 端口号/协议(打开端口)
firewall-cmd --permanent --remove-port = 端口号/协议(关闭端口)
firewall-cmd --reload(重新载入,设置生效)
firewall-cmd --query-port = 端口号/协议(查询端口情况)
应用案例:
1) 启用防火墙,
测试111端口是否能telnet, 不行
2)开放111端口
firewall-cmd -permanent --add-port=l11/tcp;需要firewall-cmd --reload
3) 再次关闭111端口
firewall-cmd --permanent --remove-port= 111/tcp;需要firewall-cmd --reload
动态监控进程
top [选项]
选项说明
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新,默认3秒 |
-i | 使top不显示任何闲置/僵死进程 |
-p | 通过ID指定监控进程 |
交互操作说明
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认选项 |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出top |
案例
- 监视特定用户
- 输入
top
查看执行的进程 - 然后输入
u
回车,再输入用户名
- 输入
- 终止指定进程
- 输入
top
查看执行的进程 - 然后输入
k
回车,再输入进程ID号
- 输入
- 指定系统状态更新的时间
top -d 10
监控网络状态
netstat [选项]
选项说明
-an
按一定顺序排列输出-p
显示哪个进程在调用
查看sshd服务的信息
netstat -anp | grep sshd
PRM和YUM
RPM
rpm :redhat package manager->redhat软件包管理工具
用于互联网下载包的打包及安装
rpm包的简单查询指令
查询已安装的rpm列表
rpm -qa | grep xx
rpm包名基本格式
name-version-release.os.arch.rpm
软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm
一个rpm包名
sqlite-3.7.17-8.el7_7.1.x86_64
名称:sqlite
版本号:3.7.17-8
适用操作系统:el7_7.1.x86_64
- el 是 Red Hat Enterprise Linux 的简写,包括Red Hat x.x,CentOS x.x,CloudLinux x.x
- 表示centos7.x的64位系统
- 如果是i686、i386表示32位系统,noarch表示通用
rpm包其他查询
rpm -q 软件包名 (查询软件包是否安装)
rpm -qi 软件包名 (查询软件包信息)
rpm -ql 软件包名 (查询软件包中的文件)
rpm -qf 文件全路径名 (查询文件所属软件包)
卸载rpm包
rpm -e 软件包名
安装rpm包
rpm -ivh 包全路径
- i=install 安装
- v=verbose 提示
- h=hash 进度条
yum
Yum是一个Shell前端软件包管理器,基于RPM包管理。
可以从指定服务器自动下载rpm包并且安装,自动处理依赖
基本指令
- 查询yum服务器是否有需要安装的软件
yum list | grep xx
- 安装指定yum包
yum install xxx
更多推荐
Linux基础学习1
发布评论