shell脚本判断进程是否存在并重启

#!/bin/bash
#
cd /opt/rms/mobileServer
export PATH=/opt/rms/nodejs010/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH

count=`ps -ef |grep mobileServer.js |grep -v "grep" |wc -l`
# echo $?
echo $count
if [ $count -eq 0 ] ; then
echo "start process......"
# cd /opt/rms/mobileServer
#scl enable nodejs010 bash
# export PATH=/opt/rms/nodejs010/bin:$PATH
echo "start to run command.."
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH
nohup node /opt/rms/mobileServer/mobileServer.js &
echo "commands finished..."
else
echo "runing..."
fi

engrmsapptst1:/home/engrms>
### 回答1: 你可以使用如下的bat脚本来实现这个功能: ``` @echo off set exeName=sensor.exe tasklist | find /i "%exeName%" > nul if %errorlevel% equ 1 ( echo "%exeName%" is not running. Starting it now... start "" "%exeName%" ) else ( echo "%exeName%" is already running. Restarting it now... taskkill /f /im "%exeName%" start "" "%exeName%" ) exit ``` 其中,`%exeName%` 是指要判断进程名。你可以根据自己的实际情况修改这个值。 脚本中,我们首先使用 `tasklist` 命令来获取当前系统中正在运行的进程列表,并使用 `find` 命令查找是否存在指定的进程。 如果该进程存在,则输出一条信息并启动进程;否则,先使用 `taskkill` 命令终止该进程,再启动它。最后,使用 `exit` 命令退出脚本。 ### 回答2: 要判断进程sensor.exe是否存在并根据情况进行相应操作,可以使用bat脚本来实现。下面是一个简单的示例: ```shell @echo off setlocal set "processName=sensor.exe" tasklist /fi "imagename eq %processName%" 2>NUL | find /i "%processName%" >NUL if %errorlevel% neq 0 ( echo %processName% 进程存在,正在启动... start "" "C:\path\to\sensor.exe" ) else ( echo %processName% 进程存在,正在重启... taskkill /f /im %processName% timeout /t 2 >NUL start "" "C:\path\to\sensor.exe" ) endlocal ``` 以上脚本使用`tasklist`命令来列出所有正在运行的进程,并通过`find`命令查找指定的进程名称。`%errorlevel%`用于判断`find`命令的执行结果,如果返回值不为0,则代表指定进程存在,需要启动;否则,代表进程存在,需要重启。 在需要启动进程的情况下,使用`start`命令启动sensor.exe文件。在需要重启进程的情况下,使用`taskkill`命令结束当前进程,然后使用`timeout`命令等待2秒,防止进程未完全终止后立即启动进程导致冲突,最后再次使用`start`命令启动sensor.exe文件。 请注意将脚本中的`C:\path\to\sensor.exe`替换为实际的sensor.exe文件路径。 ### 回答3: 可以使用以下的bat脚本来实现判断进程sensor.exe是否存在,如果不存在启动它,如果存在重启它: ```batch @echo off setlocal set PROCESS_NAME=sensor.exe tasklist | find /i "%PROCESS_NAME%" > nul if %errorlevel% neq 0 ( echo %PROCESS_NAME% 进程存在,正在启动... start "" "path\to\sensor.exe" ) else ( echo %PROCESS_NAME% 进程存在,正在重启... taskkill /f /im "%PROCESS_NAME%" > nul timeout /t 2 > nul start "" "path\to\sensor.exe" ) endlocal ``` 请将上述代码中的 `path\to\sensor.exe` 替换为实际的sensor.exe文件的路径。 这段脚本首先使用`tasklist`命令来获取当前正在运行的进程列表,并通过`find`命令检查进程名称是否包含sensor.exe。如果`tasklist`命令返回的`errorlevel`不等于0,则表示sensor.exe进程存在脚本启动sensor.exe进程;否则,脚本将使用`taskkill`命令终止sensor.exe进程,稍等2秒后再次启动sensor.exe进程。 希望这个答案对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值