


Linux daemon process example code analysis
The role of the resident process under Linux cannot be ignored, but the problems within it cannot be ignored either. How to start the process, how to end the process, and how to restart the process after the process hangs up must be designed reasonably. Let's look at an example of a shell-controlled PHP resident process.
Copy code The code is as follows:
#!/bin/sh
#filename test.sh
#The location of the file is absolutely positioned and does not change with the execution directory
cd $(cd "$(dirname "$0")";pwd)
readonly path=$(pwd)/
file=$1;
runfile="${path}data/${file} .run"
diefile="${path}data/${file}.die"
readonly file="${path}${file}.php"
if [ ! -f "$ file" ]; then
echo "please select a exists file"
elif [ ! -f "$runfile" ]; then
#Judge here. If the runfile file does not exist, it means that the process does not exist. , start the process below
echo $$>${runfile}
while true
do
if [ ! -f $diefile ]; then
If the diefile file does not exist, then Indicates that the program continues to execute, otherwise it enters else and performs the exit operation Clear runfile and diefile to exit
if rm -rf $runfile && rm -rf $diefile ; then
exit
fi
fi
else
# Here is existence Runfile is used to try to start the process
oldpid=`cat $runfile`
newpid=`ps aux | grep "process.sh $1" | grep -v grep | grep "$oldpid" | awk '{print $2}'`
if [[ $oldpid -eq $newpid ]]; then
#If the process number in the runfile is consistent with the running target process number, everything is fine^_^
echo "the process is running now"
exit
else
#If the process number in the runfile cannot match the running target process, it means there is a problem with the process. Delete the runfile directly and end the running process
echo "error situation, kill the run process and delete the run file"
ps aux | grep "process.sh $1" | grep -v 'grep' | awk '{print $2}' | grep -v $ $ | xargs --no-run-if-empty kill
If [ $? -eq 0 ]; then
/data/error
There are no limitations to this. What I want to explain here is this method of running a resident process.
When the runfile exists, but the process number does not match the killing process (that is, where the red else is executed), you must `grep -v $$`, the function is to filter out the currently running processes, otherwise they will be killed, and the subsequent ones will not be executed.
Another thing to note is about automatic restart
Automatic restart It can be placed in the crontab and executed every once in a while. The specific situation will be treated on a case-by-case basis.
Copy code The code is as follows:
crontab -e
#Open the current user schedule and add mode
#There are 5 asterisks in the schedule, f1, f2, f3, f4, f5,
#where f1 represents minute, f2 represents hour, f3 represents day, f4 represents month, f5 represents the day of the week
#* represents every minute/hour/day/month/day of the week, */n means to execute once every n minutes/hours/......
#Execute once every 2 minutes
Such a complete resident process function is completed. If you want to terminate the process, you only need to touch ${diefile} in the corresponding directory.
The above is the detailed content of Linux daemon process example code analysis. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The steps to start Apache are as follows: Install Apache (command: sudo apt-get install apache2 or download it from the official website) Start Apache (Linux: sudo systemctl start apache2; Windows: Right-click the "Apache2.4" service and select "Start") Check whether it has been started (Linux: sudo systemctl status apache2; Windows: Check the status of the "Apache2.4" service in the service manager) Enable boot automatically (optional, Linux: sudo systemctl

When the Apache 80 port is occupied, the solution is as follows: find out the process that occupies the port and close it. Check the firewall settings to make sure Apache is not blocked. If the above method does not work, please reconfigure Apache to use a different port. Restart the Apache service.

This article describes how to effectively monitor the SSL performance of Nginx servers on Debian systems. We will use NginxExporter to export Nginx status data to Prometheus and then visually display it through Grafana. Step 1: Configuring Nginx First, we need to enable the stub_status module in the Nginx configuration file to obtain the status information of Nginx. Add the following snippet in your Nginx configuration file (usually located in /etc/nginx/nginx.conf or its include file): location/nginx_status{stub_status

This article introduces two methods of configuring a recycling bin in a Debian system: a graphical interface and a command line. Method 1: Use the Nautilus graphical interface to open the file manager: Find and start the Nautilus file manager (usually called "File") in the desktop or application menu. Find the Recycle Bin: Look for the Recycle Bin folder in the left navigation bar. If it is not found, try clicking "Other Location" or "Computer" to search. Configure Recycle Bin properties: Right-click "Recycle Bin" and select "Properties". In the Properties window, you can adjust the following settings: Maximum Size: Limit the disk space available in the Recycle Bin. Retention time: Set the preservation before the file is automatically deleted in the recycling bin

Although the search results do not directly mention "DebianSniffer" and its specific application in network monitoring, we can infer that "Sniffer" refers to a network packet capture analysis tool, and its application in the Debian system is not essentially different from other Linux distributions. Network monitoring is crucial to maintaining network stability and optimizing performance, and packet capture analysis tools play a key role. The following explains the important role of network monitoring tools (such as Sniffer running in Debian systems): The value of network monitoring tools: Fast fault location: Real-time monitoring of network metrics, such as bandwidth usage, latency, packet loss rate, etc., which can quickly identify the root cause of network failures and shorten the troubleshooting time.

In Debian systems, readdir system calls are used to read directory contents. If its performance is not good, try the following optimization strategy: Simplify the number of directory files: Split large directories into multiple small directories as much as possible, reducing the number of items processed per readdir call. Enable directory content caching: build a cache mechanism, update the cache regularly or when directory content changes, and reduce frequent calls to readdir. Memory caches (such as Memcached or Redis) or local caches (such as files or databases) can be considered. Adopt efficient data structure: If you implement directory traversal by yourself, select more efficient data structures (such as hash tables instead of linear search) to store and access directory information

To restart the Apache server, follow these steps: Linux/macOS: Run sudo systemctl restart apache2. Windows: Run net stop Apache2.4 and then net start Apache2.4. Run netstat -a | findstr 80 to check the server status.

This guide will guide you to learn how to use Syslog in Debian systems. Syslog is a key service in Linux systems for logging system and application log messages. It helps administrators monitor and analyze system activity to quickly identify and resolve problems. 1. Basic knowledge of Syslog The core functions of Syslog include: centrally collecting and managing log messages; supporting multiple log output formats and target locations (such as files or networks); providing real-time log viewing and filtering functions. 2. Install and configure Syslog (using Rsyslog) The Debian system uses Rsyslog by default. You can install it with the following command: sudoaptupdatesud
