.netcore web应用在linux上如何自动重启
首先创建一个启动脚本命名为netcore.servic,放到/etc/systemd/system目录下,修改对应的app目录和 启动命令即可
Type=simple # app的目录 WorkingDirectory=/www/publish # 启动命令 ExecStart=/usr/bin/dotnet Web.App.dll Restart=always StandardOutput=journal StandardError=journal # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
重新加载守护进程列表
systemctl daemon-reload
这个脚本只具有启动应用的能力,没有停止和重启的功能,所以要再写一个脚本停止并启动应用
#!/bin/sh app_dir="/www/publish" pid=`ps -ef | grep 'Web.App.dll' | grep -v grep |awk '{print $2}'` echo $pid #kill process while [ "#$pid" != "#" ];do echo "kill $pid" kill -9 $pid sleep 1s pid=`ps -ef | grep 'Web.App.dll' | grep -v grep |awk '{print $2}'` done #start process sleep 5s systemctl start netcore.service
最后创建任务计划即可(每天零点重启)
crontab -e * 0 * * * /opt/script/app_restart.sh
重启crond服务
systemctl restart crond