什么是服务

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

提供服务的一端叫做服务端,向服务端请求服务的叫做客户端。首先,服务端启动服务进程,此时将开放对应的端口号;然后客户端指定服务端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

最新文章

  1. 如何在Excel中通过VBA快速查找多列重复的值
  2. 雷赛dmc2410控制卡,驱动器 光栅 加电机
  3. 每日英语:A Different Color: China's Chameleonic Politics
  4. android 性能分析、优化
  5. 微信公众平台项目中遇到的小问题40016,Invalid button size
  6. [开源]STM32F103RBT6最小系统,LEDx2,KEYx4
  7. C#中对象的输出
  8. 8套迷人精致的CSS3 3D按钮动画
  9. SR4K的API使用(libMesaSR.dll)
  10. java 存储oracle的clob字段
  11. 读jquery.cookie.js源码学到的几个技巧
  12. Xcode 打包(Shell)
  13. Java基础:HashMap假死锁问题的测试、分析和总结
  14. mysql定时任务event——清理过期数据
  15. Java 中 & | ^ 运算符的简单使用
  16. BZOJ2214[Poi2011]Shift——模拟
  17. c#: TabControl隐藏选项卡(WizardPages)
  18. CSS的子选择器与后代选择器的区别
  19. tp模板基础
  20. 中行用户购买KIS2014 68元/3年,时间:2013.10.18-2013.11.18

热门文章

  1. [翻译] .NET Core 3.0 Preview 7 发布
  2. python常见模块-collections-time-datetime-random-os-sys-序列化反序列化模块(json-pickle)-subprocess-03
  3. linux初学者-系统启动故障篇
  4. [ PyQt入门教程 ] PyQt5环境搭建和配置
  5. 负载分配—DNS的域名解析
  6. 使用钉钉对接禅道的bug系统,实现禅道提的bug实时在钉钉提醒并艾特对应的开发人员处理
  7. 【iOS】iOS viewDidLoad 方法名问题
  8. HTML第六章 盒子模型
  9. ns3 802.11b PHY model
  10. Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可)