【原创】解决NasCab掉进程,NasCab进程维护
最近对象吐槽家里服务器又连不上,看不了考研视频了。
我掏出手机一试,确实连不上。家里的服务器是Win11平台,用NasCab管理的视频文件,然后通过frpc做的内网穿透。
我们在外面的图书馆,连不上无非是三种情况:服务器关机了、NasCab内网穿透插件掉了、NasCab进程掉了。
远程登录服务器,发现是NasCab进程掉了。。。点开NasCab,1分钟后对象又可以愉快的看考研视频了。
我想了想,决定写个脚本处理一下这事,因为我也时不时遇到NasCab掉进程的情况,我之前都是忽略了,但现在意识到这会影响体验。
思路:写一个维护进程的脚本,循环扫描nascab进程,检测不到就开启NasCab。
要求:该脚本不能受NasCab影响,同时该脚本也不能影响NasCab,那就需要另一个终端开启nascab,于是是bat->cmd->powershell->NasCab,这样只有powershell窗口会被影响,关掉cmd不会影响NasCab。
实现代码为:powershell -command "& {Start-Process %executable%}",其中executable为要执行的程序,就是nascab。
注意nascab的路径要加入path,路径为:C:\Users\hpl\AppData\Local\Programs\nascab\NasCab.exe,其中hpl替换为自己的用户名。
然后让这个脚本开机自启动就可以了。实现方法可用创建任务计划,也可直接拖入启动文件夹。
完整代码如下(全网首发,转载请保留出处):
取名Gaia是因为我爱玩零之曙光,里面的Gaia功能强大,hhh
点击查看代码
@echo off
rem 关闭echo命令显示
chcp 65001
rem 强制开启UTF-8,以支持中文显示
rem 为本脚本获取管理员权限
ver | findstr "10\.[0-9]\.[0-9]*" >nul && goto powershellAdmin
:mshtaAdmin
rem 原理是利用mshta运行vbscript脚本给bat文件提权
rem 这里使用了前后带引号的%~dpnx0来表示当前脚本,比原版的短文件名%~s0更可靠
rem 这里使用了两次Net session,第二次是检测是否提权成功,如果提权失败则跳转到failed标签
rem 这有效避免了提权失败之后bat文件继续执行的问题
Net session >nul 2>&1 || mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~dpnx0""","","runas",1)(window.close)&&exit
Net session >nul 2>&1 || goto failed
goto Admin
:powershellAdmin
rem 原理是利用powershell给bat文件提权
rem 这里使用了两次Net session,第二次是检测是否提权成功,如果提权失败则跳转到failed标签
rem 这有效避免了提权失败之后bat文件继续执行的问题
Net session >nul 2>&1 || powershell start-process \"%0\" -verb runas && exit
Net session >nul 2>&1 || goto failed
goto Admin
:failed
echo 提权失败,可能是杀毒软件拦截了提权操作,或者您没有同意UAC提权申请。
echo 建议您右键点击此脚本,选择“以管理员身份运行”。
echo 按任意键退出。
pause >nul
exit
:Admin
echo 本脚本处理所在路径:%0
echo 已获取管理员权限!
ping 127.0.0.1 -n 1 > nul
echo 如果此窗口标题处显示“管理员”字样,那就说明提权成功了。
echo 尝试将工作目录转移到软件目录...
cd /d %~dp0
rem 切换软件工作目录到软件所在文件夹
ping 127.0.0.1 -n 1 > nul
echo 目录转移成功!
rem 在后台运行本脚本
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
rem 在这里设置目标程序
:: 程序路径需加入Path: C:\Users\hpl\AppData\Local\Programs\nascab\NasCab.exe
set executable=nascab
set /a counter=0
set TITLE=GaiaNasCab-background-admin[1.4]
rem 设置标题
title %TITLE%
echo -------------------------------------------------------------------------------- > %TITLE%.log
echo [%DATE%%TIME:~0,8%]本脚本[%TITLE%]正在以管理员模式运行! >> %TITLE%.log
echo 本脚本用于守护%executable%,保证其始终处于运行状态 >> %TITLE%.log
echo 更新于:2024年9月19日,by HPL. >> %TITLE%.log
echo -------------------------------------------------------------------------------- >> %TITLE%.log
echo: >> %TITLE%.log
echo:
echo --------------------------------------------------------------------------------
echo [%DATE%%TIME:~0,8%]本脚本[%TITLE%]正在以管理员模式运行!
ping 127.0.0.1 -n 1 > nul
echo 本脚本用于守护%executable%,保证其始终处于运行状态
ping 127.0.0.1 -n 1 > nul
echo 更新于:2024年9月19日,by HPL.
echo --------------------------------------------------------------------------------
echo:
echo [%DATE%%TIME:~0,8%]目标程序扫描中... >> %TITLE%.log
echo: >> %TITLE%.log
echo [%DATE%%TIME:~0,8%]目标程序扫描中...
echo:
:checkrun
tasklist|findstr /i "%executable%"
if errorlevel 1 (
echo [%DATE%%TIME:~0,8%]未检测到正在运行的%executable%,准备开启%executable%... >> %TITLE%.log
echo counter[%counter%] >> %TITLE%.log
echo -------------------------------------------------------------------------------- >> %TITLE%.log
echo [%DATE%%TIME:~0,8%]未检测到正在运行的%executable%,准备开启%executable%...
echo counter[%counter%]
echo --------------------------------------------------------------------------------
goto start
)
if errorlevel 0 (
rem 扫描时间建议5分钟以上,避免更新NasCab时被触发本程序
echo [%DATE%%TIME:~0,8%]已找到%executable%,循环扫描中[300s]...
echo counter[%counter%]
echo --------------------------------------------------------------------------------
ping 127.0.0.1 -n 300 > nul
goto checkrun
)
ping 127.0.0.1 -n 5 > nul
:start
echo: >> %TITLE%.log
echo [%DATE%%TIME:~0,8%]正在开启%executable%... >> %TITLE%.log
echo:
echo [%DATE%%TIME:~0,8%]正在开启%executable%...
rem 使用powershell后台运行NasCab(测试用)
::powershell -command "& {Start-Process %executable% -WindowStyle Hidden}"
rem 使用powershell前台运行NasCab(效果好,强烈推荐)
powershell -command "& {Start-Process %executable%}"
rem 前台运行NasCab(禁用,此方式NasCab会将程序log注入本bat所处的cmd,关掉本bat同时会关掉NasCab)
::start %executable%
ping 127.0.0.1 -n 1 > nul
echo:
echo [%DATE%%TIME:~0,8%]已成功开启%executable%! >> %TITLE%.log
echo [%DATE%%TIME:~0,8%]已成功开启%executable%!
echo counter[%counter%] >> %TITLE%.log
echo -------------------------------------------------------------------------------- >> %TITLE%.log
echo: >> %TITLE%.log
echo [%DATE%%TIME:~0,8%]5s后进入运行状态检测checkrun... >> %TITLE%.log
echo: >> %TITLE%.log
echo:
echo [%DATE%%TIME:~0,8%]5s后进入运行状态检测checkrun...
ping 127.0.0.1 -n 5 > nul
set /a counter+=1
goto checkrun
使用效果:
程序运行时会在bat所在目录生成log日志,可观察运行状态

【原创】解决NasCab掉进程,NasCab进程维护的更多相关文章
- 解决linux下tomcat停止进程任存在问题
解决linux下tomcat停止进程任存在问题 在Linux下(之所以强调linux下,是因为在windows下正常),执行tomcat ./shutdown.sh 后,虽然tomcat服务不能正常访 ...
- 完美解决IE8有两个进程的问题
完美解决IE8有两个进程的问题,照以下方法设置后就只有一个进程了,没有什么负影响哦! 方法: 1.win+R,在运行框里输入:gpedit.msc,回车进入组策略设置. 2.依次展开:计算机配置——管 ...
- 【转】 VC++ 关闭程序后任务管理器进程中进程仍然存在的解决方法
转载出处:http://blog.csdn.net/zac_sian/article/details/50809084 可以从以下两个方面进行查找! 1.程序开启了进程,进程中使用了while(1), ...
- Linux中influx数据库进程杀不掉,父进程为1
influx数据库一直杀不掉,父进程为1是个僵尸进程 后来我才发现,influx是运行运行状态 我只需要使用命令,停掉influx即可停止改进程
- python基础-12 多线程queue 线程交互event 线程锁 自定义线程池 进程 进程锁 进程池 进程交互数据资源共享
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- wait、waitpid 僵尸进程 孤儿进程
man wait: NAME wait, waitpid, waitid - wait for process to change state SYNOPSIS #include <sys/ty ...
- linux下的进程(孤儿进程、僵尸进程)
linux提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息,就可以得到.这种机制就是:在每个进程退出的时候,内核释放该进程所有的资源,包括打开文件,占用的内存等.但是仍然为其保留一定的信息 ...
- 浅析僵尸进程&孤儿进程
0x01 前言 此文出自:https://www.cnblogs.com/Anker/p/3271773.html 博文主要用unix/linux举例,但道理没问题的同样有助于在Python中理解僵尸 ...
- 8.9 day30 并发编程 进程理论 进程方法 守护进程 互斥锁
多道技术 1.空间上的复用 多个程序共用一套计算机硬件 多道技术原理 2.时间上的复用 切换+保存状态 1.当一个程序遇到IO操作 操作系统会剥夺该程序的CPU执行权限( 提高了CPU的利用率 ...
- Linux中的defunct进程(僵尸进程)
一.什么是defunct进程(僵尸进程)?在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状态 ...
随机推荐
- webpack4.15.1 学习笔记(六) — 代码拆分(Code Splitting)
目录 入口起点 防止重复 动态导入(dynamic imports) 代码拆分能够将代码分离到不同的 bundle 中,然后可以按需加载或并行加载这些文件.代码拆分可以用于获取更小的 bundle,以 ...
- AT_abc215_d 题解
洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定 \(N\),\(M\) 及含有 \(N\) 个整数的序列 \(A\). 求 \( ...
- c++17 using继承所有构造函数
//使用using继承所有的构造函数 #include "tmp.h" #include <iostream> using namespace std; struct ...
- 如何安装Ascend深度学习套件
1. 驱动安装 1.1 驱动测试 输入测试命令: npu-smi info 结果如下: 1.2 Ascend驱动未安装 请参考Ascend驱动的安装文档,进行安装对应显卡的驱动,文档链接如下:http ...
- 安卓开发(java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.view.View...)空指针异常
无论是初学者还是做开发很久的人都会遇到这个问题,那就是空指针异常: 遇到这种情况我们首先不要惊慌,一般这个问题都不是很大的问题,只需要我们 静下心来慢慢的查找,下面分成几步来带你查找问题: 1:首先是 ...
- 【CI/CD】Centos7 下载安装 Jenkins
一.Docker安装Jenkins 参考: https://www.bilibili.com/video/BV11B4y1W7eH?p=5 安装Jenkins最新稳定版镜像: [root@Centos ...
- 【JavaWeb】封装一个MVC框架
框架参考自: https://www.bilibili.com/video/BV1gV411r7ct 在老师的基础上添加了 1.POST参数处理 2.Tomcat8版本下中文乱码处理 3.可声明请求方 ...
- 【Java-GUI】03 事件监听
--1.监听机制案例 简答理解:操作驱动程序执行 完整的操作体系:事件源.事件.监听器.注册监听 案例: 点击OK按钮,让上方的输入框写入一段字符 package cn.dzz; import jav ...
- 国产软件如何让人再次失望——!20824 mindspore1.3.0gpu version can not compile from source code, because openmpi source code has bug
如题,该PR地址: https://gitee.com/mindspore/mindspore/pulls/20824#note_7053720 What type of PR is this? Un ...
- 在深度学习的视觉VISION领域数据预处理的魔法常数magic constant、黄金数值的复现: mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]
代码: https://gist.github.com/pmeier/f5e05285cd5987027a98854a5d155e27 import argparse import multiproc ...