您现在的位置是:首页 >技术交流 >从零开始学习Linux运维,成为IT领域翘楚(九)网站首页技术交流
从零开始学习Linux运维,成为IT领域翘楚(九)
?Linux系统服务
Service命令
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程。
语法:
service 服务名 [start | stop | restart | reload | status]
注意:
service命令其实是去/etc/init.d目录下,去执行相关程序
示例1
查看当前防火墙的状况,关闭防火墙和重启防火墙。
[root@zk3 ~]# service iptables status
Systemd命令
Linux的启动一直采用init进程。
$ sudo /etc/init.d/apache2 start
# 或者
$ service apache2 start
两个缺点:
一是启动时间长。 init 进程是串行启动只有前一个进程启动完,才会启动下一个进程。
二是启动脚本复杂。 init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
systemctl
systemctl 是 Systemd 的主命令,用于管理系统。
System V init命令 | systemctl命令 | 作用 |
---|---|---|
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service | 重新加载配置文件(不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
systemd-analyze
systemd-analyze 命令用于查看启动耗时。
# 查看启动耗时
$ systemd-analyze
# 查看每个服务的启动耗时
$ systemd-analyze blame
# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain
# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service
hostnamectl
hostnamectl 命令用于查看当前主机的信息。
# 显示当前主机的信息
$ hostnamectl
# 设置主机名。
$ sudo hostnamectl set-hostname rhel7
timedatectl
timedatectl 命令用于查看当前时区设置。
# 查看当前时区设置
$ timedatectl
# 显示所有可用的时区
$ timedatectl list-timezones
# 设置当前时区
$ sudo timedatectl set-timezone
America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
⭐ systemctl 是 Systemd 的主命令管理系统
⭐ systemd-analyze 命令用于查看启动耗时。
⭐ hostnamectl 命令用于查看当前主机的信息。
⭐ localectl 命令用于查看本地化设置。
⭐ timedatectl 命令用于查看当前时区设置。
Chkconfig
chkconfig命令用来更新、查询、改动不同执行级上的系统服务。比方安装了httpd服务,而且把启动的脚本放在了/etc/rc.d/init.d文件
夹下,有时候须要开机自己主动启动它,而有时候则不须要,因此,就能够使chkconfig命令来进行控制。
选项:
参数 | 参数说明 |
---|---|
–add | 将相应的服务加入chkconfig管理 |
–del | 将相应的服务从chkconfig管理中删除 |
–level | 查看相应服务的运行级别 |
示例1
列出chkconfig 所知道的所有命令。
# chkconfig --list
开启服务。
# chkconfig telnet on //开启Telnet 服务
# chkconfig --list //列出chkconfig 所知道的所有的服务的情况
关闭服务
# chkconfig telnet off // 关闭 Telnet 服务
# chkconfig --list // 列出chkconfig所知道的所有的服务的情况
systemctl 设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
System V init 命令 | systemctl 命令 | 作用 |
---|---|---|
chkconfig foo on | systemctl enable foo.service | 开机自动启动 |
chkconfig foo off | systemctl disable foo.service | 开机不自动启动 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为 开机自动启动 |
chkconfig --list | systemctl list-unit-files --type=service | 查看各个级别下服务 的启动与禁用情况 |
附录:
经常使用服务介绍
amd: # 自己主动安装网络文件系统守侯进程
apmd: # 高级电源管理
Arpwatch: # 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Autofs: # 自己主动安装管理进程automount。与NFS相关,依赖于NIS
Bootparamd: # 引导參数server。为LAN上的无盘工作站提供引导所需的相关信息
crond: # 计划任务
Dhcpd: # 启动一个动态IP地址分配server
Gated: # 网关路由守候进程,使用动态的OSPF路由选择协议
Httpd: # WEBserver
Inetd: # 支持多种网络服务的核心守候程序
Innd: # Usenet新闻server
Linuxconf: # 同意使用本地WEBserver作为用户接口来配置机器
Lpd: # 打印server
Mars-nwe: # mars-nwe文件和用于Novell的打印server
Mcserv: # Midnight命令文件server
named: # DNSserver
netfs: # 安装NFS、Samba和NetWare网络文件系统
network: # 激活已配置网络接口的脚本程序
nfs: # 打开NFS服务
nscd: # nscdserver,用于NIS一个支持服务,它快速缓存用户口令和组成成员关系
portmap: # RPC portmap管理器,与inetd相似,它管理基于RPC服务的连接
postgresql: # 一种SQL数据库server。
routed: # 路由守候进程,使用动态RIP路由选择协议
rstatd: # 一个为LAN上的其他机器收集和提供系统信息的守候程序
ruserd: # 这是一个基于RPC的服务。它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld: # 这是一项基于RPC的服务。同意用户给每一个注冊到LAN机器的其他终端写消息
rwhod: # 激活rwhod服务进程。它支持LAN的rwho和ruptime服务
sendmail: # 邮件serversendmail
smb: # Samba文件共享/打印服务
snmpd: # 本地简单网络管理候进程
squid: # 激活代理serversquid
syslog: # 一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
xfs: # X Window字型server,为本地和远程Xserver提供字型集
xntpd: # 网络时间server
ypbind: # 为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd: # NIS口令server
ypserv: # NIS主server
gpm: # 管鼠标的服务
identd: # AUTH服务。在提供用户信息方面与finger相似
?Linux系统定时任务
什么是定时任务
定时任务命令是cond,crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。
为什么要用crond
计划任务主要是做一些周期性的任务,比如凌晨3点定时备份数据、晚上23点开启网站抢购接口、凌晨0点关闭抢占接口等。
计划任务主要分为以下两种使用情况:
? 系统级别的定时任务
临时文件清理、系统信息采集、日志文件切割
? 用户级别的定时任务
定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据。
crontab配置文件
[root@centos7 ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6)(Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
备注:
1) * 表示任意的(分、时、日、月、周)时间都执行
2) - 表示一个时间范围段, 如5-7点
3) , 表示分隔时段, 如6,0,4表示周六、日、四
4) /1 表示每隔n单位时间, 如*/10 每10分钟
crontab的时间编写规范
00 02 * * * ls #每天的凌晨2点整执行
00 02 1 * * ls #每月的1日的凌晨2点整执行
00 02 14 2 * ls #每年的2月14日凌晨2点执行
00 02 * * 7 ls #每周天的凌晨2点整执行
00 02 * 6 5 ls #每年的6月周五凌晨2点执行
00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls #每年2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次
* * * * * ls #每分钟都执行
00 00 14 2 * ls #每年2月14日的凌晨执行命令
*/5 * * * * ls #每隔5分钟执行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行
00 02 1-8 * * ls #每月1号到8号凌晨2点执行
0 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月的1,10,22号的4:45执行
45 4 1-10 * * ls #每月的1到10号的4:45执行
3,15 8-11 */2 * * ls #每隔两天上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:15执行
crontab命令选项
? -e #编辑定时任务
? -l #查看定时任务
? -r #删除定时任务
? -u #指定其他用户
计划任务实践示例
示例1
假设在每周一、三、五的凌晨 3 点 25 分,都需要使用 tar 命令把某个网站的数据目录进 行打包处理,使其作为一个备份文件。
25 3 * * 1,3,5 /usr/bin/tar -zcvf backup.tar.gz /opt/wwwroot