在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。 1) 所有者 2) 所在组 3) 其它组 4) 改变用户所在的组 示意图如下:
ls –ahl
应用实例:创建一个组police,再创建一个用户tom,将tom放在police组,然后使用tom来创建一个文件ok.txt。【参考补充示例】
补充示例:
示例:增加用户时直接指定用户的家目录和用户组
创建一个用户,名字叫abc,主目录是/home/abc/目录,属于aabb这个组。
useradd -d /home/abc/ abc -m -g aabb
-d的意思是指定用户的主目录
-m的意思是,如果主目录不存在,那么就自动创建这个目录
-g的意思是指定该用户属于哪个组
注意1:我们需要先创建组aabb。命令:groupadd aabb
注意2:我们新增用户后,要及时通过root用户设置新增用户的密码。这是一个好习惯!
usermod -g bandit tom
rwx权限详解
文件及目录权限实际案例
第一种方式:+ 、-、= 变更权限
演示案例如下截图:
第二种方式:通过数字变更权限
(1)创建组 (2)创建用户(好习惯,创建用户后要设置密码)
(3)jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
(4)jack 可以修改该文件,本组人可以读写,让其它组人可以读
(5)xh 投靠警察,看看是否可以读写(使用root用户)
crontab –e
命令。
接着输入任务到调度文件,如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说:每小时的每分钟执行ls –l /etc/ > /tmp/to.txt
命令特殊符号的说明:
特定时间执行任务案例:
/home/mytask1.sh
,文件内容是:date >> /tmp/mydate.log
2) 给文件/home/mytask1.sh
一个可以执行的权限,命令chmod 744 /home/mytask1.sh
3) 设置个人任务调度。执行crontab –e
命令
4) 输入任务到调度文件,任务内容:*/1 * * * * /home/mytask1.sh
5) 查看文件/tmp/mydate.log,成功!
案例2:每隔1分钟,将当前日期和日历信息,都追加到/tmp/mycal.log 文件中
步骤:
1) 编写一个文件/home/mytask2.sh
,文件内容是:date >> /tmp/mycal.log
和 cal >> /tmp/mycal.log
2) 给文件/home/mytask2.sh
一个可以执行的权限,命令chmod 744 /home/mytask2.sh
3) 设置个人任务调度。执行crontab –e
命令
4) 输入任务到调度文件,任务内容:*/1 * * * * /home/mytask2.sh
5) 查看文件/tmp/mycal.log,成功!
截图同上!不在赘图!
案例3:每天凌晨2:00将mysql数据库testdb,备份到文件/tmp/mydb.bak中。
步骤:
1) 编写一个文件/home/mytask3.sh
,文件内容是:/usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
2) 给文件/home/mytask3.sh
一个可以执行的权限,命令chmod 744 /home/mytask3.sh
3) 设置个人任务调度。执行crontab –e
命令
4) 输入任务到调度文件,任务内容:0 2 * * * /home/mytask3.sh
5) 查看文件/tmp/mydb.bak,成功!
截图同上!不在赘图!
shell脚本文件内容:
#!/bin/bash
#备份路径
BACKUP=/data/backup/sql/dy
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo "===备份开始==="
echo "备份文件存放于${BACKUP}/$DATETIME.tar.gz"
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=Ces123456
#创建备份目录
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
#后台系统数据库
DATABASE=dy_backgroundms
mysqldump -u${DB_USER} -p${DB_PW} --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql.gz
#投入品监管数据库
DATABASE=dy_firip
mysqldump -u${DB_USER} -p${DB_PW} --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.sql.gz
#压缩成tar.gz包
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除备份目录
rm -rf ${BACKUP}/$DATETIME
#删除30天前备份的数据
find $BACKUP -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;
echo "===备份成功==="
注:find:linux的查找命令,用户查找指定条件的文件。
-mtime:标准语句写法。
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件。
"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三
-exec:固定写法。
rm -rf:强制删除文件,包括目录。
{} \; :固定写法,一对大括号+空格+\;
分区的方式(知道即可):
Windows下的磁盘分区:
原理介绍:
Linux系统分区的原理示意图:
硬盘说明:
查看所有设备(光驱/media,u盘,硬盘)挂载情况 命令:lsblk 或者 lsblk -f 【简记:老师不离开】
fdisk /dev/sdb
3) 格式化 mkfs -t ext4 /dev/sdb1
4) 挂载 mount /dev/sdb1 /home/newdisk/
卸载 umount /dev/sdb1 或者 umount /home/newdisk/
5) 设置可以自动挂载 vim /etc/fstab
,添加完成后,执行mount -a
即刻生效。重新查看所有设备(光驱/media,u盘,硬盘)挂载情况
fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1
其中ext4是格式化后的文件类型
mount 设备名称 挂载目录
注意:用命令行挂载重启后会失效!
mount -a
即刻生效。
vim /etc/fstab
/usr/目录
的磁盘占用情况,深度为1
命令:du -ach --max-depth=1 /usr/
ls –l /home/ | grep “^-” | wc -l
ls –l /home/ | grep “^d” | wc -l
ls –lR /home/ | grep “^-” | wc -l
ls –lR /home/ | grep “^d” | wc -l
tree /home/
[没有tree指令咋办,使用yum来安装]
效果:
目前我们的网络配置采用的是NAT
查看VMware虚拟网络编辑器
修改VMnet8的ip地址
查看虚拟机的网关
查看windows环境的中VMnet8网络配置 (ipconfig指令方式和图形化界面方式) ipconfig指令方式
图形化界面方式
使用ping,测试主机之间网络连通性 Linux ping Windows Windows ping Linux
勾选【自动连接(A)】即可
说明 登陆后,通过界面来设置自动获取ip。
特点 1) 配置比较简单。 2) 每次启动linux后,分配的ip地址可能不一样。不适合做服务器。
此种方式,不需要重启网路服务或者重启虚拟机,因为我们点击【应用】的本质就是重启网络服务!
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(原装的虚拟机)
或者vim /etc/sysconfig/network-scripts/ifcfg-Auto_eth1
(复制的原装的虚拟机,本博主使用的)
要求:将ip地址配置为静态的static(或为none也行)
,ip地址为:192.168.xxx.xxx
如果希望配置生效: 法1) reboot // 重启系统 法2) service network restart // 重启网络服务 配置文件说明:
vim /etc/sysconfig/network
文件中内容如下:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop // 写入新的主机名
注意:主机名称不要有“_”下划线,不识别。vim /etc/hosts
文件增加ip和主机的映射
192.168.25.204 hadoop
….
主机名
来连接CentOS,进入C:\Windows\System32\drivers\etc\hosts 192.168.25.104 hadoop 进程
。每一个进程都分配一个ID号
。前台与后台
,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行,例如:[sshd,crond]。 用法说明:
应用实例:以全格式显示当前所有的进程,查看进程的父进程。
演示截图:
查看sshd进程的父进程号是多少?
案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务。
案例3:终止多个gedit编辑器。通过进程名称终止进程 killall gedit 案例4:强制杀掉一个终端。 kill 对应的bash的进程号,但是杀不掉。 kill -9 对应的bash的进程号
注意:
服务(service)
本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd,防火墙等),因此我们又称为守护进程
,是Linux中非常重要的知识点。【原理图】在CentOS7X后,不再使用service,而是systemctl。
我们可以通过Windows的telnet指令来测试某个端口是否在监听并可以访问
] 命令:telnet ip 端口
2、说明:
service iptables stop
service iptables start
这种方式只是临时生效
,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令
。setup -> 系统服务
就可以看到。
在Linux的命令行中输入:setup 回车
选择 系统服务 回车,服务前面显示星号
表示的该服务已启动
方式2:查看/etc/init.d/服务名称
一个思考题: 如果不小心将默认的运行级别设置成 0 或者 7 ,怎么处理? 别怕,进入单用户模式,修改成正常的即可!
chkconfig --list
1) 查看某个服务在各个运行级别自启动/关闭的状态 chkconfig --list | grep xxx
2) 查看某个服务在各个运行级别自启动/关闭的状态 chkconfig 服务名称 --list
3) 设置某个服务,在某个运行级别,开启或关闭 chkconfig --level 5 服务名称 on/off
例如:设置sshd服务在1运行级别时on。
chkconfig --level 1 sshd off/on
4) 设置某个服务,开启或关闭 chkconfig 服务名称 on/off
例如:使iptables彻底关闭。
chkconfig iptables off
[不管是哪个级别都关闭]
chkconfig iptables off
表示在所有level下关闭防火墙
chkconfig iptables on
表示在所有level下开启防火墙
top在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)
。
top -d 10
指定系统更新进程的时间为10秒。netstat –anp | grep sshd
2、查看占用22端口的进程。
命令:netstat –anp | grep 22
在某些Linux分发版中
。它生成具有.RPM扩展名的文件
。RPM是RedHat Package Manager(RedHat软件包管理工具)
的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
Linux的分发版本都有采用(suse、redhat、centos等等),可以算是公认的行业标准了。rpm –qa | grep xxx
例如:rpm -qa | grep firefox
noarch表示通用
。rpm -qa | grep firefox
rpm -q 软件包名 查询rpm软件包是否安装,例如:rpm -q firefox
rpm -qi 软件包名 查询rpm软件包信息。例如:rpm -qi filefox
rpm -ql 软件包名 查询软件包中的文件,例如:rpm -ql firefox
rpm -qf 文件全路径名 查询文件所属的软件包,例如:rpm -qf /etc/passwd
或者 rpm -qf /root/install.log
rpm -e firefox
rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
2) 如果我们就是要删除foo这个rpm 包,可以增加参数 --nodeps
,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行。
如:rpm -e --nodeps foo
[小心使用]按照下图进行操作
此时会发现Linux桌面上出现一个光驱
具体安装过程:
软件包管理器
。基于RPM包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系
,并且一次安装所有依赖的软件包
。
yum install firefox
//会自动的下载安装适合你系统的最新版本
问题:Linux常用命令,至少6个 答:netstat、top、lsblk、find、ps、chkconfig。
问题:Linux查看内存、磁盘存储情况、磁盘io读写情况、端口占用、进程等命令。 答: top df -lh netstat -tunlp ps –aux | grep 进程名 iotop 如果没有该命令,就先yum安装一把
查看端口占用情况:netstat -tunlp
查看磁盘io读写:iotop
唐朝有《卖炭翁》--背后有故事,以后深究之。
宋朝有《卖油翁》--背后有故事,以后深究之。
陈康肃公尧咨善射,当世无双,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之,久而不去。见其发矢十中八九,但微颔之。康肃问曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“
无他,但手熟尔。
”康肃忿然曰:“尔安敢轻吾射?”翁曰:“以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:“我亦无他,惟手熟尔。
”康肃笑而遣之。 《卖油翁》这则故事的作者是欧阳修,出自他的私家笔记《归田录》。
老黄牛精神