linux后台运行退出不中断,Linux后台执行的方法 - 关闭、退出不影响
时间: 2024-02-03 22:12:37 浏览: 240
在Linux中,一般可以使用以下方式让程序在后台运行:
1. 使用 & 符号:在命令后面加上 & 符号,例如:
```
$ ./my_program &
```
这样程序就会在后台运行。
2. 使用 nohup 命令:nohup 可以在程序运行时忽略 SIGHUP 信号,从而避免程序在用户退出时被终止。例如:
```
$ nohup ./my_program &
```
这样程序就会在后台运行,并且在用户退出时不会被终止。
如果想要查看后台程序的状态,可以使用 jobs 命令。如果想要将后台程序切换到前台运行,可以使用 fg 命令。如果想要将后台程序放到后台继续运行,可以使用 bg 命令。
相关问题
linux 退出不保存
在Linux中,当你想要退出当前会话但不想保存任何未保存的更改时,可以使用以下几种方法:
1. **Ctrl + D (终端)**:这是最常用的退出方式,如果你在命令行界面(TTY或bash shell)输入了文本并没有执行任何命令,按下Ctrl + D将直接退出。
2. **Ctrl + Z (终端)**:这将把当前任务挂起并返回到shell提示符,然后使用`bg`命令可以让任务继续在后台运行,而使用`exit`或`logout`将结束整个会话。
3. **exit命令(终端或shell)**:在任何shell中,你可以键入`exit`来退出当前会话。这会关闭当前窗口或终端,并询问是否保存修改,如果选择不保存,就直接退出。
4. **logout命令(终端或shell)**:此命令用于完全退出登录的用户会话,不保存任何更改,适用于远程SSH会话。
5. **Ctrl + C (终止命令)和kill命令(进程管理)**:如果你正在运行某个特定的命令,可以按Ctrl + C中断命令,然后使用`kill`命令结合进程ID来强制退出。
记住,如果你在一个编辑器或文本编辑器中工作,可能还需要使用特定的快捷键或菜单选项来保存或取消保存文件。具体取决于使用的编辑器。在不确定是否保存的情况下,确认文件已保存再退出是一个好习惯。
linux中有一类运行在后台的进程,它们常驻内存,称为守护进程。实现该类进程的一个简单的方法是:父进程创建子进程后,子进程睡眠,父进程自我终止,使子进程成为守护进程daemon。编程实现这个daemon进程,要求在其执行期间输出其父进程的id号以及当前时间。(注:调用sleep()函数可以使进程睡眠,使daemon进程退出可以用键盘中断Ctrl+c)
下面是一个简单的 C 代码实现守护进程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/stat.h>
#include <time.h>
void handler(int signum) {
printf("Daemon terminated.\n");
exit(0);
}
int main() {
pid_t pid = fork();
if (pid < 0) {
printf("Fork failed.\n");
exit(1);
}
if (pid > 0) {
printf("Parent process ID: %d\n", getpid());
exit(0);
}
umask(0); // 设置文件权限掩码为0
setsid(); // 创建新会话
chdir("/"); // 切换工作目录到根目录
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO); // 关闭标准输入输出错误流
signal(SIGINT, handler); // 注册信号处理函数
while(1) {
time_t now = time(NULL);
printf("Daemon process ID: %d, Current time: %s", getpid(), ctime(&now));
sleep(5);
}
return 0;
}
```
该程序中,父进程创建子进程后就退出,子进程成为守护进程。守护进程首先调用 `umask()` 函数将文件权限掩码设置为0,这样创建的文件权限将是最大的;然后调用 `setsid()` 函数创建新会话,并且成为该会话的首进程和组长进程,从而摆脱控制终端的控制,不受用户登录和注销等影响;接着调用 `chdir()` 函数将工作目录切换到根目录,释放当前目录的占用,避免卸载系统时当前目录所在的文件系统无法卸载;最后关闭标准输入、输出和错误流,并且注册一个信号处理函数,用于捕获用户的中断信号。在守护进程运行期间,每隔5秒钟输出一次当前时间和进程id。
阅读全文