目标
配置一个简单服务,让它在出现异常时自动重启。
测试环境
Ubuntu 16.04.2 LTS
服务功能
为方便观察,服务功能设定为:监视文件 /tmp/foo
,一旦该文件发生变化,同步到 /tmp/bar
。
准备工作
sudo apt-get update
sudo apt-get install inotify-tools
编写配置文件
mkdir -p /usr/lib/systemd/system
vim /usr/lib/systemd/system/foo.service
配置文件内容
[Unit]
Description=foo
[Service]
ExecStart=/bin/bash -c "while true; do /usr/bin/inotifywait -qq --event modify /tmp/foo; cp /tmp/foo /tmp/bar; done"
Restart=always
[Install]
WantedBy=multi-user.target
测试结果
创建测试文件
touch /tmp/foo
启动服务
systemctl start foo
确认服务正常工作
echo hello>/tmp/foo && sleep 1 && cat /tmp/foo /tmp/bar
应该输出两个 hello
。
查看服务进程
ps aux | grep foo | grep bash
杀死进程
kill <pid>
再次查看服务进程
ps aux | grep foo | grep bash
此时,pid
应该变了。
确认服务还在正常工作
echo world>/tmp/foo && sleep 1 && cat /tmp/foo /tmp/bar
应该输出两个 world
。
关停服务
systemctl stop foo
测试完毕。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。