建设网站要多久的时间,沧州做网站的公司,微信营销网站模板,wordpress页面.html这里是weihubeats,觉得文章不错可以关注公众号小奏技术#xff0c;文章首发。拒绝营销号#xff0c;拒绝标题党 背景
线上有一个Goland的应用程序#xff0c;goland语言和java不同#xff0c;如果有任何异常就直接挂掉退出#xff0c;异常处理要实现 try catch也比较麻烦… 这里是weihubeats,觉得文章不错可以关注公众号小奏技术文章首发。拒绝营销号拒绝标题党 背景
线上有一个Goland的应用程序goland语言和java不同如果有任何异常就直接挂掉退出异常处理要实现 try catch也比较麻烦。
但是部署很方便。因为是脚本语言。启动goland打包好的二进制文件只需要
.\main但是如果进程挂了不会自动重启
Systemd程序
Systemd是linux用来管理应用程序的一个程序。
简单理解就是我们可以通过Systemd去启动一些简单的脚本程序等。
可以实现简单的类似看门狗机制如果进程挂了会自动帮忙重启
如何通过Systemd启动goland程序
配置服务 进入/etc/systemd/system目录 新增一个服务启动文件比如叫mq.service
vim mq.service填入如下内容
[Unit]
DescriptionMQ Service
Afternetwork.target[Service]
ExecStart/data/mq/main
WorkingDirectory/data/mq
Restartalways[Install]
WantedBymulti-user.target这里简单说明下各个配置的含义
- Unit- Description服务的描述- Documentation文档介绍- After该服务要在什么服务启动之后启动比如Mysql需要在network和syslog启动之后再启动
- Install- WantedBy值是一个或多个Target当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名.wants后缀构成的子目录中- RequiredBy它的值是一个或多个Target当前Unit激活(enable)时符号链接会放入/etc/systemd/system目录下面以Target名.required后缀构成的子目录中- Alias当前Unit可用于启动的别名- Also当前Unit激活(enable)时会被同时激活的其他Unit
- Service- Type定义启动时的进程行为。它有以下几种值。- Typesimple默认值执行ExecStart指定的命令启动主进程- Typeforking以 fork 方式从父进程创建子进程创建后父进程会立即退出- Typeoneshot一次性进程Systemd 会等当前服务退出再继续往下执行- Typedbus当前服务通过D-Bus启动- Typenotify当前服务启动完毕会通知Systemd再继续往下执行- Typeidle若有其他任务执行完毕当前服务才会运行- ExecStart启动当前服务的命令- ExecStartPre启动当前服务之前执行的命令- ExecStartPost启动当前服务之后执行的命令- ExecReload重启当前服务时执行的命令- ExecStop停止当前服务时执行的命令- ExecStopPost停止当其服务之后执行的命令- RestartSec自动重启当前服务间隔的秒数- Restart 指定服务在停止后是否应该自动重新启动- TimeoutSec定义 Systemd 停止当前服务之前等待的秒数- Environment指定环境变量- WorkingDirectory 工作目录- ExecStart 启动脚本我们主要是配置了Restartalways,如果服务异常退出就会自动重启 其他的都没怎么配置
这里我们就配置完我们的启动脚本了接下来我们就看看如何启动
启动服务
systemctl start mq.servicesystemctl常用命令
# 启动服务
systemctl start mq.service
# 查看服务状态
systemctl status mq.service
# 重启服务
systemctl restart mq.service
# 列出正在运行的Unit
systemctl list-units
# 列出所有Unit包括没有找到配置文件的或者启动失败的
systemctl list-units --all
# 列出所有没有运行的 Unit
systemctl list-units --all --stateinactive
# 列出所有加载失败的 Unit
systemctl list-units --failed# 列出所有正在运行的、类型为service的Unit
systemctl list-units --typeservice
# 重新加载一个服务的配置文件
sudo systemctl reload mq.service# 重载所有修改过的配置文件
sudo systemctl daemon-reload查看服务log
# 查看所有服务日志
journalctl
# 查看指定时间的日志
journalctl --since2012-10-30 18:17:16
journalctl --since 20 min ago
journalctl --since yesterday
journalctl --since 2015-01-10 --until 2015-01-11 03:00
journalctl --since 09:00 --until 1 hour ago# 显示尾部的最新10行日志
journalctl -n# 显示尾部指定行数的日志
journalctl -n 20# 实时滚动查看指定服务最新日志
journalctl -u mq.service -f
# 查看包含指定关键字的服务log
journalctl -u mq.service | grep -i 小奏技术log配置
配置文件在/etc/systemd/journald.conf中
SystemMaxUse指定journal日志文件占用的最大磁盘空间。当日志文件占用的磁盘空间超过这个值时旧的日志将被删除。可以使用K、M、G等单位来指定大小。SystemKeepFree指定journal日志文件系统应该保持的最小可用磁盘空间。当磁盘空间低于这个值时旧的日志将被删除。SystemMaxFileSize指定journal日志文件的最大单个文件大小。当单个日志文件的大小超过这个值时旧的日志将被删除。SystemMaxRetentionSec指定journal日志文件应该保留的最长时间。超过这个时间的日志将被删除
总结
总的来说使用systemctl去部署一些简单服务还是比较不错的挂了可以自动拉取也可以配置log信息等
参考
systemctl命令介绍和使用