如何将无法通过crontab启动的.net程序改写为手动执行脚本的长期解决方案?

2026-04-01 10:121阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计937个文字,预计阅读时间需要4分钟。

如何将无法通过crontab启动的.net程序改写为手动执行脚本的长期解决方案?

目录

一、问题描述

二、将 .NET 程序写成服务

三、通过 crontab 执行脚本无法启动原因

一、问题描述

.NET 网关程序需要设置定时重启,但使用 crontab 执行脚本时无法启动。

二、将 .NET 程序写成服务

1.创建服务项目

2.配置服务参数

3.编写服务逻辑

三、通过 crontab 执行脚本无法启动原因

1.服务未正确安装

2.服务配置错误

3.服务依赖项未设置正确

目录
  • 一、问题描述
  • 二、将 .net 程序写成服务
  • 三、通过 crontab 执行脚本无法启动原因

一、问题描述

.net 网关程序需要设置定时重启,按照日常操作先把正在运行的 PID kill 掉后,再执行启动服务。

把脚本放到 crontab 计划任务上,可以把服务 PID kill 掉,但无法启动服务,直接手动运行脚本是可以成功启动的。

.net 服务重启脚本test1.sh 如下:

[root@localhost ~]# cat test1.sh #!/bin/bash ID=`ps -ef | grep YTGateWayServiceZZ| grep -v "grep" | awk '{print $2}'` for id in $ID; do kill -9 $id done sleep 3; nohup dotnet /home/gateway1/YTGateWayServiceZZ.dll > /dev/null 2>&1 &

通过脚本无法启动,试着把 .net 程序写成服务后,发现是可以正常重启的。

二、将 .net 程序写成服务

先把原来通过执行路径方式启动的服务 kill 掉之后,再执行 config.sh 脚本把程序写成服务;

并写入 crontab 计划任务中,通过测试是可以正常重启程序。

[root@localhost ~]# cat config.sh #!/bin/bash # 找到 dotnet 命令位置 dotnet=`which dotnet` # 将 .net core 写成服务方式运行 cat > /usr/lib/systemd/system/gateway1.service << EOF [Unit] # 服务描述 Description=gateway1 YTGateWayServiceZZ [Service] # 程序工作路径 WorkingDirectory=/home/gateway1 # 启动程序路径 ExecStart= $dotnet /home/gateway1/YTGateWayServiceZZ.dll Restart=always # 如果 dotnet 服务崩溃,10秒后重新启动服务 RestartSec=10 [Install] # 系统运行级别 WantedBy=multi-user.target EOF # 写入 crontab 计划任务(6个小时重启一次) crontab -l > conf && echo "0 */6 * * * systemctl restart gateway1.service " >> conf && crontab conf && rm -f conf

执行脚本 config.sh

[root@localhost ~]# chmod +x config.sh [root@localhost ~]# ./config.sh

管理自定义服务命令

# systemctl status gateway1.service # systemctl start gateway1.service # systemctl restart gateway1.service # systemctl enable gateway1.service

三、通过 crontab 执行脚本无法启动原因

通过将 .net 程序写成服务测试之后,初步判断很有可能是 crontab 执行时没有找到系统环境变量导致的。

检查了脚本发现只有 dotnet 命令没有使用绝对路径,试着把 dotnet 命令加上绝对路径结果可以成功启动了。

[root@localhost ~]# which dotnet /usr/local/bin/dotnet

[root@localhost ~]# cat test1.sh #!/bin/bash ID=`ps -ef | grep YTGateWayService| grep -v "grep" | awk '{print $2}'` for id in $ID; do kill -9 $id done sleep 3; nohup /usr/local/bin/dotnet /root/publish/YTGateWayService.dll > /dev/null 2>&1 &

到此这篇关于.net 程序通过 crontab 无法启动手动执行脚本启动的方法的文章就介绍到这了,更多相关.net  crontab 无法启动内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

如何将无法通过crontab启动的.net程序改写为手动执行脚本的长期解决方案?

本文共计937个文字,预计阅读时间需要4分钟。

如何将无法通过crontab启动的.net程序改写为手动执行脚本的长期解决方案?

目录

一、问题描述

二、将 .NET 程序写成服务

三、通过 crontab 执行脚本无法启动原因

一、问题描述

.NET 网关程序需要设置定时重启,但使用 crontab 执行脚本时无法启动。

二、将 .NET 程序写成服务

1.创建服务项目

2.配置服务参数

3.编写服务逻辑

三、通过 crontab 执行脚本无法启动原因

1.服务未正确安装

2.服务配置错误

3.服务依赖项未设置正确

目录
  • 一、问题描述
  • 二、将 .net 程序写成服务
  • 三、通过 crontab 执行脚本无法启动原因

一、问题描述

.net 网关程序需要设置定时重启,按照日常操作先把正在运行的 PID kill 掉后,再执行启动服务。

把脚本放到 crontab 计划任务上,可以把服务 PID kill 掉,但无法启动服务,直接手动运行脚本是可以成功启动的。

.net 服务重启脚本test1.sh 如下:

[root@localhost ~]# cat test1.sh #!/bin/bash ID=`ps -ef | grep YTGateWayServiceZZ| grep -v "grep" | awk '{print $2}'` for id in $ID; do kill -9 $id done sleep 3; nohup dotnet /home/gateway1/YTGateWayServiceZZ.dll > /dev/null 2>&1 &

通过脚本无法启动,试着把 .net 程序写成服务后,发现是可以正常重启的。

二、将 .net 程序写成服务

先把原来通过执行路径方式启动的服务 kill 掉之后,再执行 config.sh 脚本把程序写成服务;

并写入 crontab 计划任务中,通过测试是可以正常重启程序。

[root@localhost ~]# cat config.sh #!/bin/bash # 找到 dotnet 命令位置 dotnet=`which dotnet` # 将 .net core 写成服务方式运行 cat > /usr/lib/systemd/system/gateway1.service << EOF [Unit] # 服务描述 Description=gateway1 YTGateWayServiceZZ [Service] # 程序工作路径 WorkingDirectory=/home/gateway1 # 启动程序路径 ExecStart= $dotnet /home/gateway1/YTGateWayServiceZZ.dll Restart=always # 如果 dotnet 服务崩溃,10秒后重新启动服务 RestartSec=10 [Install] # 系统运行级别 WantedBy=multi-user.target EOF # 写入 crontab 计划任务(6个小时重启一次) crontab -l > conf && echo "0 */6 * * * systemctl restart gateway1.service " >> conf && crontab conf && rm -f conf

执行脚本 config.sh

[root@localhost ~]# chmod +x config.sh [root@localhost ~]# ./config.sh

管理自定义服务命令

# systemctl status gateway1.service # systemctl start gateway1.service # systemctl restart gateway1.service # systemctl enable gateway1.service

三、通过 crontab 执行脚本无法启动原因

通过将 .net 程序写成服务测试之后,初步判断很有可能是 crontab 执行时没有找到系统环境变量导致的。

检查了脚本发现只有 dotnet 命令没有使用绝对路径,试着把 dotnet 命令加上绝对路径结果可以成功启动了。

[root@localhost ~]# which dotnet /usr/local/bin/dotnet

[root@localhost ~]# cat test1.sh #!/bin/bash ID=`ps -ef | grep YTGateWayService| grep -v "grep" | awk '{print $2}'` for id in $ID; do kill -9 $id done sleep 3; nohup /usr/local/bin/dotnet /root/publish/YTGateWayService.dll > /dev/null 2>&1 &

到此这篇关于.net 程序通过 crontab 无法启动手动执行脚本启动的方法的文章就介绍到这了,更多相关.net  crontab 无法启动内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

如何将无法通过crontab启动的.net程序改写为手动执行脚本的长期解决方案?