⑴ 如何將我的php腳本以守護進程的方式一直運行
寫好php腳本。建議定期檢測內存佔用,核心邏輯就不寫了。這個跟業務有關。
if(memory_get_usage()>100*1024*1024){
exit(0);//大於100M內存退出程序,防止內存泄漏被系統殺死導致任務終端
}
假設該php文件的路徑為/root/run.php
打開終端
setsid php /root/run.php > /dev/null &
編輯進程監控腳本,當進程不存在時,自動重啟 /root/monitor.sh
#!/bin/bash
alive=`ps aux|grep root\/run|grep -v grep|wc -l`
if [ $alive -eq 0]
then
php /root/run.php > /dev/null &
fi
添加計劃任務(每分鍾檢測一次)
crontab -e
* * * * * /root/monitor.sh > /dev/null &
⑵ 用按鍵精靈做了個腳本 但被游戲檢測進程檢測出來了 進程如何不被檢測
方法/步驟
1.下載安裝天狼進程隱藏工具,下載地址問網路。電腦上提前安好按鍵精靈。
⑶ 如何使shell腳本成為守護進程
1,if條件語句裡面表達式要與左右[ ] 用空格隔開,否則運行時會報錯
2,用表達式給變數負值時要將表達式放在括弧()裡面,並在前面加符號"$",應該還有其他方法 目前只會這種,在參考那篇博客用單引號運行無法通過。
3,ps aux | grep $PROGRAM | grep -v grep | wc -l 此表達式檢測運行進程數量
4,ps aux | grep $PROGRAM | grep T | grep -v grep | wc -l 此表達式檢測進程運行狀態,0:運行 1:停止 但進程依然存在 可以通過命令 kill -SIGSTOP pid 進行測試
第一個條件判斷目標進程運行數目 數目小於1即為0 則運行目標進程
第二條件判斷目標進程是否處於停止狀態 處於停止狀態則kill掉 重新運行該進程
應用程序編譯完及腳本編寫好後,在/etc/rc.local 文件中添加執行語句 /usr/mytest/mytest.sh & 重啟後就能自動載入守護進程了。
⑷ win10 64位如何強制保護我想要保護的進程,防止它被結束
在你的腳本中加入:strComputer = "mandline),"C:\PROmandline),"C:\TEST.VBS") then objProcess.Create("wscript.exe C:\TEST.VBS") end if Loop其中C:\TEST.VBS,就是你的主腳本路徑,根據實際情況該寫,但是C:\TEST.VBS需要大寫 直接運行你的主腳本C:\TEST.VBS即可,不需要你手動運行保護腳本
⑸ 如何將我的php腳本以守護進程的方式一直運行
寫好php腳本。建議定期檢測內存佔用,核心邏輯就不寫了。這個跟業務有關。
if(memory_get_usage()>100*1024*1024){
exit(0);//大於100M內存退出程序,防止內存泄漏被系統殺死導致任務終端
}
假設該php文件的路徑為/root/run.php
打開終端
setsid php /root/run.php > /dev/null &
編輯進程監控腳本,當進程不存在時,自動重啟 /root/monitor.sh
#!/bin/bash
alive=`ps aux|grep root\/run|grep -v grep|wc -l`
if [ $alive -eq 0]
then
php /root/run.php > /dev/null &
fi
⑹ 如何給腳本寫一個守護進程
在我們日常運維中,寫腳本監控一個進程是比較常見的操作,比如我要監控mysql進程是否消失,如果消失就重啟mysql,用下面這段代碼就可以實現:
#!/bin/sh
Date=` date '+%c'`
while :
do
if ! psaux | grep -w mysqld | grep -v grep >/dev/null 2>&1
then
/etc/init.d/mysqldstart
echo $Datemysqldwasreboot >>/var/log/reboot_mysql.log
fi
done
本篇這是以mysql為例子,但實際中如果是監控的腳本出了問題,報警沒發出來,那就比較尷尬了,所以為保證我們的檢查腳本能實時運行,我們需要一個進程來守護這個腳本,這就是我們今天要說的主題,如何給腳本寫一個daemon,我們先上代碼:
#!/usr/bin/python
import subprocess
from daemonimport runner
cmd = "/root/demo_script/restart_mysql.sh"
class App():
def __init__(self):
self.stdin_path = '/dev/null'
self.stdout_path = '/dev/tty'
self.stderr_path = '/dev/tty'
self.pidfile_path = '/tmp/hello.pid'
self.pidfile_timeout = 5
def start_subprocess(self):
return subprocess.Popen(cmd, shell=True)
def run(self):
p = self.start_subprocess()
while True:
res = p.poll()
if resis not None:
p = self.start_subprocess()
if __name__ == '__main__':
app = App()
daemon_runner = runner.DaemonRunner(app)
daemon_runner.do_action()
腳本比較簡單,沒什麼特別的邏輯,關於daemon這個模塊如何使用,我這里給出官方的解釋,注意喲,是英文的,我就不翻譯了,如果有生詞就查查字典,就當多學幾個了單詞吧。
__init__(self, app)
| Setuptheparametersof a new runner.
|
| The `app` :
|
| * `stdin_path`, `stdout_path`, `stderr_path`: Filesystem
| pathsto openand replacetheexisting `sys.stdin`,
| `sys.stdout`, `sys.stderr`.
|
| * `pidfile_path`: Absolutefilesystempathto a filethat
| willbeusedas thePIDfilefor thedaemon. If
| ``None``, noPIDfilewillbeused.
|
| * `pidfile_timeout`: Usedas thedefault acquisition
| timeoutvaluesuppliedto therunner's PIDlockfile.
|
| * `run`:
| started.
|
| do_action(self)
| Performtherequestedaction.
|
| parse_args(self, argv=None)
| Parsecommand-linearguments.
這樣就完成了,守護進程的啟動比較高大上,輸入以上代碼後,可以直接在終端輸入:
#python monitor.py start
當然還有stop,restart等參數。
這里我介紹的是其中一個應用場景,實際中可以靈活運用,比如1台伺服器上啟動的程序過多,環境配置比較復雜,就可以先啟動daemon進程,然後通過daemon來啟動其它所有應用程序,就不用一個一個應用程序啟動了,這篇就到這里,有問題可以給我留言。
⑺ 如何保護一個程序執行,不被任何打斷或改變
防止被幹掉,比較麻煩,如果有源代碼,盡可能編譯成服務程序、驅動程序。
如果是現成的可執行文件,設置可執行文件的許可權如系統許可權,將殺進程的許可權降低
另外,可以設置計劃任務,定時啟動
還可以用雙進程方式,檢查一個被殺死,另一個立即啟動,等等。