问题
服务器需要连接校园网,但是一段时间不使用,校园网会自动断开。所以需要配置shell脚本,每隔一段时间向校园网地址post请求。
解决方案
执行一个开机自启动的服务,该服务执行python文件,python文件来进行post请求,每隔一段时间
流程
下面命名为auto-login.service
[Unit]
Description=北航自动登录脚本
After=network-online.target
[Service]
Type=simple
ExecStart=/opt/share/buaa_auto_login/auto-login.sh
User=nobody
Group=nogroup
WorkingDirectory=/tmp
Restart=always
RestartSec=1800s
[Install]
WantedBy=multi-user.target
auto-login.sh里面就一句python 目录/Login.py login userid password
这样只需要开机自启动这个服务,这个服务每三分钟调用一次auto-login.sh,然后这个sh脚本调用python进行联网,实现功能。
开机自启动配置
# 添加或修改配置文件后,需要重新加载
systemctl daemon-reload
# 设置自启动,实质就是在 /etc/systemd/system/multi-user.target.wants/ 添加服务文件的链接
systemctl enable auto-login
systemd概述
Unit文件
Systemd 可以管理所有系统资源,不同的资源统称为 Unit(单位)。
systemd目录
Unit 文件按照 Systemd 约定,应该被放置指定的三个系统目录之一中。这三个目录是有优先级的,如下所示,越靠上的优先级越高。因此,在三个目录中有同名文件的时候,只有优先级最高的目录里的那个文件会被使用。
- /etc/systemd/system:系统或用户自定义的配置文件
- /run/systemd/system:软件运行时生成的配置文件
- /usr/lib/systemd/system:系统或第三方软件安装时添加的配置文件。
Systemd 默认从目录 /etc/systemd/system/ 读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录 /usr/lib/systemd/system/,真正的配置文件存放在那个目录。
Unit文件结构
- Unit 和 Install 段:所有 Unit 文件通用,用于配置服务(或其它系统资源)的描述、依赖和随系统启动的方式
- Service 段:服务(Service)类型的 Unit 文件(后缀为 .service)特有的,用于定义服务的具体管理和操作方法
Service段中各个字段含义
- Type=simple:默认值,执行ExecStart指定的命令,启动主进程
ExecStart:启动当前服务的命令 - RestartSec:自动重启当前服务间隔的秒数
- Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括 always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
- User:指定运行服务的用户
- Group:指定运行服务的用户组
- 指定服务的工作目录
例行性工作安排
两种工作排程方式,
- 一种是例行性的,每隔一个周期就要进行 crontab
- 一种是突发性,做完一次就行。 at
systemd的配置文件放置目录
系统开机是否会执行某个服务取决于/etc/systemd/system下的文件,而该目录下是连接档,实际执行的启动脚本配置文件在/usr/lib/systemd/system下面,
扩展名 | 主要服务功能 |
---|---|
.service | 最常见的类型 |
.socker | 最常见的类型 |
.target | 是一群unit的集合,即执行一堆其他的.service或者.socket服务 |
systemctl status atd.service
systemctl stop atd.service
如何设定相关的服务启动环境,
vim /etc/systemd/system/myTime.service
systemctl daemon-reload
[root@asswei ~]# systemctl start myTime.service
[root@asswei ~]# systemctl status myTime.service