Liunx学习总结(八)--服务

什么是服务

服务是向外提供服务的进程,一般来说都会放在后台,既然要持续不断的提供外界随时发来的服务请求,服务进程就需要常驻在内存中,且不应该和终端有关,否则终端退出服务程序就退出了。另外,要能够接待外界的请求为外界提供服务,那么就需要有个专属于这个服务的"服务窗口",这个服务窗口就是端口号,通过端口号就能找到服务的提供者。

提供服务的一端叫做服务端,向服务端请求服务的叫做客户端。首先,服务端启动服务进程,此时将开放对应的端口号;然后客户端指定服务端IP地址和端口号向该服务端发起请求,服务端所在主机的内核接收到请求数据包,然后分析数据包发现请求的是某某端口号,内核知道该端口号是哪个应用程序监听的端口,所以将请求报文发送给对应的应用程序,应用程序收到报文后,将和客户端建立连接,并进行数据传输。

另外需要注意的是,并非所有服务都总是提供端口号的,例如xinetd这个服务,只有在需要的时候才接管相应的端口,如rsync监听端口为222时,那么请求rsync时,xinetd在监听过程中的端口号就是222。在不被请求的时候,xinetd是没有端口号的。

在Linux中,服务分为独立守护进程和超级守护进程。独立守护进程是自行监听在后台的,基本上所有的服务都是独立守护进程类的服务。超级守护进程专指xinetd这个服务,这个服务代为管理着一些特殊的服务,这类服务在被请求的时候才会由xinetd通知它启动服务,服务提供完毕后就关闭服务,这类服务称为瞬时守护进程,即只存在于瞬时。

但要明白,超级守护进程xinetd本身是一个常驻内存的独立守护进程,因为它要监听来自外界对其管理的瞬时守护进程的请求。只不过一般不工作的时候,xinetd不占用端口号,在工作的时候它占用被请求的瞬时守护进程的端口号,并处于监听状态

systemd 服务管理

CentOS 7不使用 SysV 而是改为 systemd 了,这是因为 systemd 支持多个服务并发启动,而 SysV只能一个一个地启动,这样最终导致的结果是 systemd 方式启动会快很多。

常用命令

systemctl list-units -all --type=service #列出系统所有的服务
systemctl enable crond.service #让某个服务开机启动(.service可以省略)
systemctl disable crond.service #不让开机启动
systemctl status crond.service #查看服务状态
systemctl start crond.service #启动某个服务
systemctl stop crond.service #停止某个服务
systemctl restart crond.service #重启某个服务
systemctl is-enabled crond #查看某个服务是否开机启动
systemctl reload sshd.service #重新加载配置

定时服务

cron 服务是 Linux 内置服务,默认不会开机自动启动。可用以下命令启动和停止服务,也可以设置成开机启动:

systemctl start crond # 启动cron服务
systemctl stop crond # 停止cron服务
systemctl restart crond # 重启cron服务
systemctl enable crond.service # 设置cron开机启动

管理 cron:

crontab -l # 查看当前crontab
crontab -e # 编辑当前crontab	
crontab -r # 删除当前crontab

添加任务:

crontab -e
0 */1 * * * command
0 */2 * * * command

任务格式:

*  *  *  *  *  command
分 时  日  月  周   命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

实例:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

查询任务是否加了:

crontab -l -u root # 查看root用户
0 */1 * * * command
0 */2 * * * command
posted @ 2019-08-23 13:33  MarkLogZhu  阅读(143)  评论(0编辑  收藏  举报