linux中daemonize用法,daemonize Unix系统后台守护进程管理软件

在我们的工作中,很多时候都需要在linux中后台运行程序,

方法1: nohup &

方法2:

daemonize Unix系统后台守护进程管理软件

优点:更加正规 后台运⾏更稳定

git clone git://github.com/bmc/daemonize.git

sh configure && make && sudo make install

[root@dev-hadoop-test01 ~]# which daemonize

/usr/local/sbin/daemonize

daemonize -c /data/prometheus/ /data/prometheus/up.sh

-c 是指定运⾏路径

/data/prometheus/up.sh 是运⾏路径下的 ⼀个启动脚本

下⾯是这个启动脚本的内容

内容:就是开启prometheus进程

[root@prometheus yd]# cat  /data/prometheus/up.sh

/data/prometheus/prometheus --web.listenaddress="0.0.0.0:9090"        --web.read-timeout=5m    --web.maxconnections=10  --storage.tsdb.retention=15d  --storage.tsdb.path="data/"   --query.max-concurrency=20   --query.timeout=2m

生产上就用这的参数去启动prometheus

方法3:安装screen⼯具 放⼊后台运⾏

screen还有另外⼀个好处 就是 可以随时切换进⼊ 程序前台窗

⼜ 查看各种调试信息

screen 也有不好的地⽅

• 不够正规化 总觉得还是个临时办法

• screen -l 提供的后台 列表 不够⼈性化,很多时候 你记不住 到底哪个是哪个

• 很容易被误关闭 操作的时候 ctrl +ad / ctrl +d 不⼩⼼操作错了 直接就退出去了..

不推荐生产上用,测试可以用

亲测可行,推荐可以使用 方法1 方法2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 守护进程是一种运行在后台的进程,通常用于执行一些长期运行的任务,例如网络服务、定时任务等。下面是生成守护进程的大致步骤: 1. 创建一个子进程,并在子进程调用 `setsid` 函数,以创建一个新的会话并成为该会话的首进程。 2. 在子进程调用 `chdir` 函数,将工作目录切换到根目录以避免挂载文件系统时的问题。 3. 在子进程关闭不需要的文件描述符,例如标准输入、标准输出、标准错误输出等。 4. 在子进程执行守护进程的主逻辑,例如监听网络连接、处理客户端请求等。 5. 在父进程退出,使得子进程成为孤儿进程,从而成为守护进程。 下面是一个简单的示例代码: ```c #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <fcntl.h> void daemonize() { // 创建子进程 pid_t pid = fork(); if (pid < 0) { perror("fork"); exit(1); } else if (pid > 0) { // 父进程退出 exit(0); } // 创建新会话并成为首进程 if (setsid() < 0) { perror("setsid"); exit(1); } // 切换工作目录 if (chdir("/") < 0) { perror("chdir"); exit(1); } // 关闭文件描述符 close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); // 执行守护进程主逻辑 while (1) { // do something } } int main() { // 生成守护进程 daemonize(); // 守护进程主逻辑 while (1) { // do something } return 0; } ``` 这个示例代码,`daemonize` 函数用于生成守护进程。在函数,首先调用 `fork` 函数创建子进程,然后在子进程调用 `setsid` 函数创建一个新的会话并成为首进程。接下来,调用 `chdir` 函数将工作目录切换到根目录,调用 `close` 函数关闭不需要的文件描述符。最后,在子进程执行守护进程的主逻辑。 在 `main` 函数,首先调用 `daemonize` 函数生成守护进程,然后在主循环执行守护进程的主逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值