我的编程空间,编程开发者的网络收藏夹
学习永远不晚

.net 程序通过 crontab 无法启动手动执行脚本启动的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

.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 无法启动内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

.net 程序通过 crontab 无法启动手动执行脚本启动的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

.net程序通过crontab无法启动怎么办

这篇文章主要介绍“.net程序通过crontab无法启动怎么办”,在日常操作中,相信很多人在.net程序通过crontab无法启动怎么办问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.net程序通过cront
2023-06-22

Android中通过外部程序启动App的三种方法

第一种:直接通过包名:代码如下: Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.joyodream.jiji");
2022-06-06

Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

废话不多说了,先给大家上代码,具体代码如下所示:#!/bin/bash cd `dirname $0` CUR_SHELL_DIR=`pwd` CUR_SHELL_NAME=`basename ${BASH_SOURCE}` #修改这里ja
2022-06-04

通过注册表实现程序开机自启动的方法

文章目录 一、前言二、修改注册表的两种方法 (一)手动修改注册表(二)命令行修改注册表 三、查询注册表键值四、小结 一、前言 一般而言,木马或病毒成功在服务器上运行后,通过会做的一件事就是把自己添加进开机启动项,以实现在目标服务器上
2023-08-21

云服务器启动电脑程序运行的方法

1.远程登录云服务器要启动电脑程序运行,首先需要远程登录到云服务器。你可以使用远程桌面协议(RDP)或者SSH(SecureShell)等工具进行远程登录。具体的登录方式取决于你使用的云服务提供商和操作系统。2.安装所需的软件和依赖在远程登录到云服务器后,你需要确保所需的软件和依赖已经安装在服务器上。这些软件和依赖可能
2023-10-27

Win7应用程序无法正常启动0xc000142的修复方法

稳定的win7系统在长时间使用后也会出现问题。例如,当安装和打开某些应用程序时,它会表明应用程序无法正常启动0xc0000142,这是因为缺少了系统组件导致的,那0xc0000142这个问题要如何解决?下面小编介绍win7应用程序无法正常启
2023-07-10

程序因为计算机中丢失msvcr110无法启动的解决方法

  mvcr110.dll是C+里文件之一,如果缺失了,将可能导致一些软件无法正常启动。而mvcr110.dll有可能是由于用户在清理系统垃圾的时候误删除了。如果此时出现无法启动此程序因为计算机中丢失msvcr110怎么办?  当出现这种情
2023-06-06

Win10运行vc6.0提示应用程序无法正常启动0xc0000142错误的解决方法

很多网友在升级Win10系统后出现vc6.0不能运行提示“应用程序无法正常启动0xc0000142”问题,无法运行的原因是win10不http://www.cppcns.com兼容中文版的vc,解决方法很简单,直接用
2023-05-22

win8.1系统提示应用程序无法启动(0x00000xx)的原因及解决方法

在最新Ghost Win8.1 64位纯净旗舰版系统中在运行程序的时候会弹出“应用程序无法启动(0x00000XX) 应用程序错误的提示,在使用兼容性以及管理员模式运行等方式都无法解决,该如何解决?下面编程网的小编给大家分享下解
2022-06-04

VMwareTools启动脚本未能在虚拟机中成功运行的两种解决方法

这篇文章主要介绍了VMwareTools启动脚本未能在虚拟机中成功运行的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录