本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载!
注意:最新修改版本已发布在 这里,点击前往查看!
定时任务调度
crond任务调度
概述:
- 定义:是指系统在某个特定的时间执行特定的命令或程序
- 用处:
- 系统工作:有些重要的工作必须周而复始的执行,如病毒查杀
- 用户工作:个别用户需要执行某些程序,比如对mysql数据库备份
语法:
1
2
3
4crontab -e # 编辑crond任务调度
crontab -r # 终止任务调度
crontab -l # 列出当前的任务调度
service crond restart # 重启任务调度案例:新建一条crond任务,每隔一分钟就将/etc/的文件列表覆盖写入/tmp/to.txt文件下
1
2crontab -e # 设置个人任务调度
*/1 * * * * ls -l /etc/ >> /tmp/to.txt # 任务调度内容,*/1 * * * * 为cron时间表达式任务调度组成:
运行结果:
注意:简单命令可以直接在crontab中直接写入,复杂任务需要写脚本运行
cron表达式:
组成:_ _ _ _ _ (5个位置)
每个位置的含义:
- 分(0-59)
- 时(0-23)
- 日(1-31)
- 月(1-12)
- 周(0-7)0、7均表示周日
特殊符号:
- *:代表任何时间
- ,:代表不连续时间
- -:代表连续时间
- */n:代表每隔多久执行一次
案例:
cron应用实例
每隔一分钟将当前的日期信息,追加到/root/mydate文件中(脚本实现)
先编写一个shell文件 mytask1.sh:
1
vim mytask.sh
运行结果:
注意:命令行输入shell脚本
路径/名称
即可直接运行给shell文件一个可执行权限:
1
chmod 744 mytask1.sh
运行结果:
在crontab中添加新行即表示添加定时任务:
运行结果:
磁盘分区和挂载
分区类型
- mbr分区:
- 最多支持四个主分区
- 系统只能安装在主分区
- 拓展分区要占一个主分区
- MBR最大只支持2TB,但拥有最好的兼容性
- gpt分区:
- 支持无限多个主分区(但操作系统可能限制,例如windows下最多128个分区)
- 最大支持18EB的容量(1EB=1024PB,1PB=1024TB)
- windows7后64位支持gpt
windows分区
linux分区
原理介绍:
- linux无论几个分区,分给哪一个目录使用,归根结底就只有一个根目录,linux每个分区都是整个文件系统的一部分
- linux采用了一种 ”载入“ 的处理方法,它的文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来
原理示意图:
查看磁盘分区情况:
1
lsblk -f # 查看磁盘分区情况
运行结果:
磁盘详细信息:
1
lsblk # 显示磁盘详细信息(包含大小)
运行结果:
新增磁盘
需求:增加一块硬盘(sdb1,2G),并将其挂载到/home/newdisk
示意图:
如何增加一块硬盘:
虚拟机添加硬盘
使用
lsblk
命令查看磁盘分区情况,新添加的磁盘并未显示:重启后,重新执行该命令:
分区
sdb是一整块磁盘,要把它像sda一样分成sdb1…
使用
fdisk /dev/sdb
命令将磁盘分区:输入m获取帮助:
创建新分区:
再次使用
lsblk -f
查看磁盘分区情况:
格式化
1
mkfs -l ext4 /dev/sdb1
运行结果:
格式化后,使用命令
lsblk -f
可查看其uuid:挂载:
1
mount /dev/sdb1 /home/newdisk/
运行结果:
设置自动挂载:
如果不设置自动挂载,系统重启后挂载会被取消
1
vim /etc/fstab
添加一行内容:
磁盘情况查询
df
语法:
1
df -l # 查看系统整体磁盘使用情况
案例:查看系统整体磁盘使用情况
1
df -lh # 可选参数h,可将磁盘大小单位替换为K、G、T等
运行结果:
du
语法:
1
du /目录 # 查看指定目录磁盘占用情况,默认为当前目录
可选参数:
- h # 带计量单位
- a # 含文件
- s # 指定目录占用大小汇总
- c # 列出明细的同时,增加【总用量】
- –max-depth=1 # 子目录深度
案例:查看/opt目录的磁盘占用情况,深度为1
1
du -ach --max-depth=1 /opt
运行结果:
注意:增加depth深度不会影响总用量,但会增加文件搜索深度
wc
统计/home文件夹下文件个数
1
ls -l /home/ | grep "^-" | wc -l # grep后跟的是正则表达式
统计/home文件夹下目录个数
1
ls -l /home/ | grep "^d" | wc -l
统计/home文件夹下文件个数,包含子文件夹中的文件
1
ls -lR /home/ | grep "^-" | wc -l
统计/home文件见下的目录个数,包含子文件夹中的目录
1
ls -lR /home/ | grep "^d" | wc -l
以树状显示/home目录结构
1
tree /home
运行结果:
注意:如果出现下图提示,使用
yum install tree
命令安装tree(输入两次y)后,重新执行即可
网络配置
NAT原理图
动态ip
自动获取,系统开机后不需要手动连接网络
进入系统-》首选项-》网络连接,编辑网络,勾选自动连接并应用:
重启系统,观察网络是否自动连接:
1
reboot
运行结果:
缺点:linux每次自动获取的ip可能不一样,因此该方法不适用于服务器(服务器ip是不变的)
静态ip
原理:通过修改配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0)来指定静态ip,并连接到因特网
案例:配置ip地址为静态ip
确定要分配的ip地址段:
修改配置文件:
1
vim /etc/sysconfig/network-scripts/ifcfg-eth0 # ip地址以192.168.72.130为例
修改内容:
重启服务/系统:
1
service network restart # 重启网络服务或重启系统(reboot)
运行结果:
ifconfig
命令查看系统ip:测试是否能够连接外网:
进程管理
基本认识
在linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个进程id
每一个进程都会对应一个父进程,而这个父进程可以复制多个子进程
每个进程都能以两种方式存在(前台和后台):
- 前台就是用户目前屏幕上可以进行操作的
- 后台进程则是实际在操作的(屏幕上无法看到的进程,通常使用后台方式执行)
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束
系统进程
语法:
1
2ps -aux[可选项,显示所有进程,用户格式显示,显示进程参数] # 查看系统进程
ps -ef # 显示指令的父进程案例:
查找系统全部进程
1
ps -aux | more # 使用more指令分页,方便查看
运行结果:
注意:可以使用grep命令从所有命令中筛选出来某个进程(sshd为例)
显示进程的父进程:
1
ps -ef | more # 显示父进程
运行结果:
进程树
语法:
1
pstree -p[可选,显示进程id] # 树状显示所有进程
案例:树状形式显示所有进程及其id号
终止进程
语法:
1
2kill -9[可选项,强制停止] 进程号 # 停止进程,当要kill的进程是系统进程时如果不加-9该指令会被忽略
killall 进程名称 # 批量终止进程,进程名称支持通配符案例:
踢掉非法登录的用户jerry:
1
2ps -aux | grep sshd # 获取jerry远程连接(sshd)的进程号*
kill -9 * # 使用kill命令,将该进程停止运行结果:
终止所有远程连接:
1
killall sshd # 停止所有sshd服务
运行结果:
终止终端进程:
1
2ps -aux | grep bash # 查询终端(bash)的进程号*
kill -9 * # 终端为系统进程,单独执行kill *无效果查询进程号:
终止该进程:
服务管理
介绍:
服务(service)本质就是进程,但是在后台运行的,通常都会监听某个端口,等待其他程序的请求,例如(mysqld,sshd,防火墙等),因此我们又称为守护进程。
语法:
1
service 服务名 [start|stop|restart|reload|status] # 开启、停止、重启、重新加载(服务不会中断)、状态查询
案例:
查看当前防火墙(iptables)的状态,关闭和启动防火墙
1
service iptables status # 查询防火墙状态
运行结果:
关闭防火墙
1
service iptables stop # 关闭、启动防火墙
运行结果:
补充:
查看某个端口状态:
1
telnet ip地址 端口号
运行结果:
查看所有服务名称:
setup:
/etc/init.d子目录:
1
2cd /etc/init.d # 进入该目录
ls -l # 查看子目录运行结果:
注意:每个目录都代表一种服务
管理每个系统(服务)运行级别下某个服务自启动:
查看自启动状态:
1
chkconfig --list # 查看每个运行级别下不同服务的自启动状态
运行结果:
案例:关闭sshd服务运行级别为5时的自启动
1
chkconfig --level 5 sshd off # 控制自启动状态
运行结果:
注意:使用chkconfig命令修改自启动后需要重启系统才能生效
实例:
案例1:请显示当前系统所有服务的各个运行级别的运行状态
1
chkconfig --list
案例2:请查看sshd服务的运行状态
1
service ssdh status
案例3:将sshd服务在运行级别5下设置为不自动启动
1
chkconfig --level 5 sshd off
案例4:当运行级别为5时,关闭防火墙
1
chkconfig --level 5 iptables off
案例5:在所有运行级别下,关闭防火墙
1
chkconfig iptables off # 如果不指定运行级别,则代表全部运行级别
案例6:在所有运行级别下,开启防火墙
1
chkconfig iptables on
动态监控进程
语法:
1
top # 查看正在运行的进程,与ps的区别是可以动态显示系统进程(每3秒自动刷新一次)
案例:
动态显示系统进程,每隔10秒刷新一次:
1
top -d 10
运行结果:
查询指定用户进程:
1
u # top状态下按下u键并输入用户名,即可显示指定用户的进程
杀死指定进程:
1
k # top状态下按下k键并输入进程id,即可杀死该id对应的进程
退出top指令:
1
q
监控网络状态
语法:
1
netstat -anp # 查看系统网络情况
案例:监控sshd网络服务状态
1
netstat -anp | grep sshd
运行结果:
rpm包管理
介绍
一种用于互联网下载包的打包及安装工具,生成具有.rpm拓展名的文件。rpm是Redhat Package Manager的缩写,类似windows的setup.exe。
查询指令
语法:
1
2
3
4rpm -qa # 查询系统所安装的全部rpm包
rpm -qi 软件名 # 查询安装包详细信息(版本、安装包)
rpm -ql 软件名 # 查询软件安装路径
rpm -qf 包名 # 查询所属软件包案例:
查询火狐(firefox)的rpm包信息
1
rpm -qa | grep firefox
运行结果:
查询/etc/passwd目录所属软件包:
1
rpm -qf /etc/passed
运行结果:
卸载指令
语法:
1
rpm -e 软件名 # 卸载软件
案例:卸载火狐
1
rpm -e firefox
运行结果:
注意:在卸载时,可能提示
removing these packages would break dependencies:foo is needed by bar-1.0-1
- 放弃删除
- 强制删除:rpm -e –nodeps firefox(不推荐)
安装指令
语法:
1
rpm -ivh[install(安装),verbose(提示),hash(进度条)] 包名 # 安装软件包
案例:安装镜像文件中的firefox软件包
挂载iso镜像:
注意:挂载镜像后,就可以在系统中使用指令对镜像中内容进行操作
将/media/CentOS_6.8_Final/Packages/firefox-45.0.1-1.el6.centos.x86_64.rpm文件复制到/opt目录下:
1
cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/
注意:系统所需的rpm包都在/Packages下
进入/opt目录,使用rpm命令安装该软件包:
1
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm
运行结果:
yum包管理
介绍
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包(使用yum进行包管理需要联网)。
基本指令
查询yum服务器是否有需要安装的软件:
1
yum list | grep xx # 筛选软件包
安装指定的软件包:
1
yum install xxx # 下载安装
案例
使用yum方式安装firefox
1 | yum list | grep firefox # 查询yum服务器上是否有该软件 |
运行结果:
后记
linux笔记差不多就这么多啦!
其实后面还有shell编程,但没太多时间再学下去啦,有时间补上。
后面会更新人工智能的笔记,一定要坚持下去呀!
不足之处,欢迎留言,会及时回复,及时更正!
创作不易,感谢支持!