Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:
/usr/local/mysql/bin/mysqld_safe –user=mysql &
但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:
nohup /root/start.sh &
在shell中回车后提示:
[~]$ appending output to nohup.out
原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。
但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭。
咨询红旗Linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。
在第二遍给我演示时,我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。
这个细节有人和我一样没注意到,所以在这儿记录一下了。
分享到:
相关推荐
### 在Linux终端中使用后台运行模式启动程序的方法 #### 一、引言 在Linux操作系统中,终端(Terminal)是一个非常强大的工具,它允许用户通过命令行的方式与系统交互,执行各种任务。本文将详细介绍如何在Linux...
在Linux系统中,C++编程时常常需要创建守护线程(daemon thread)来执行特定的任务,比如监控系统状态、定时任务或确保某个服务始终运行。守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者...
在Linux环境下,Qt是一个强大的C++图形用户界面应用程序开发框架,它允许开发者创建美观、功能丰富的桌面和移动应用。这个程序描述的是一个基于Qt的项目,它的主要功能是从某个特定地址获取点数据,并在图形界面上...
可以使用 ctrl + z 将进程放到后台暂停,然后使用 jobs 查看当前有多少在后台运行的命令,使用 bg 将后台中暂停的作业进程继续运行,使用 fg 将后台中的作业进程调至前台继续运行。 例如: ctrl + z 将 ./test.sh ...
本文旨在详细介绍如何在Linux环境下后台运行Java JAR包的各种方法及其背后的原理。针对不同的需求,文章提供了多种策略来确保程序能够在脱离用户交互的情况下持续运行。 #### 方式一:基本运行模式 **命令示例**: ...
为了解锁终端,可以在命令后面添加`&`符号,使程序在后台运行: ```bash java -jar shareniu.jar & ``` 此时,SSH窗口不再被锁定,但程序的运行依赖于该终端会话。如果关闭终端,程序也将停止运行。 ### 方式三:`...
(2)对用户编写的Shell增加后台运行功能。即用户可以使用“&”作为一个命令,表示该命令在后台启动。前台还可以处理其他命令。 (3)修改程序,增加I/O重定向功能。即用户可以使用“>”,“<”和“|”符号改变程或...
有时,我们需要让某个程序在后台运行,以免阻塞当前的操作。在 Linux 中,我们可以使用 & 命令来将程序放到后台运行。例如,updatedb & 将 updatedb 命令放到后台运行。我们也可以使用 bg 命令来将程序放到后台运行...
在Linux系统中,后台执行程序通常与控制台或终端分离,使得用户可以继续进行其他工作,而不需要等待某个程序完成。这个压缩包“linux后台(源代码下载).zip”可能包含了用于开发或理解Linux后台服务的源代码及相关...
- **启动流程优化**:当用户启动某个应用程序时,后台服务进程首先检查是否有依赖于该应用启动的其他程序。如果有,则按照预先定义好的顺序依次启动这些程序,确保整个启动过程的顺利进行。 - **资源共享管理**:...
守护进程是长时间运行在后台的程序,负责执行特定任务,如网络服务、系统管理等。`arpd`的主要职责是监控网络中的ARP请求和响应,维护ARP缓存,并处理异常情况,如ARP欺骗。 编写`arpd`程序通常涉及以下几个关键...
在Unix和Linux下,Oracle数据库通常以服务的形式运行,可以通过命令行接口进行操作。 二、安装与配置 1. **安装**: 在Unix或Linux系统上安装Oracle需要先安装适当的软件包,如Oracle Database Server软件。这通常...
守护进程是在后台运行且与控制终端无关联的进程,常用于提供持续性的服务,如网络服务(如HTTP服务器Apache、FTP服务器vsftpd)、日志记录(syslogd)等。创建守护进程通常涉及以下几个步骤: 1. 从父进程中分离:...
当你在命令末尾添加`&`时,命令会在后台运行,而不会阻塞你的终端。例如: ```bash your_command & ``` 此时,你可以立即返回命令行并继续输入其他命令,而之前那个命令会继续在后台运行。但是,当终端关闭时,...
在Linux系统中,守护进程是一种特殊的后台进程,它们在系统启动时启动,并且在后台运行,不与任何终端关联。创建守护进程的过程涉及一系列的系统调用,如fork()、setsid()、chdir()、umask()、close()等。 网络通信...
使用这种方式可以在不影响其他操作的情况下运行服务器,并随时查看其运行状态。 #### 5. 编辑文件:`vi [文件名]` - `vi [文件名]`:使用vi编辑器打开指定文件。 - `:ESC :q!`:按`ESC`键后输入`:q!`命令退出编辑...
3. 系统和进程管理:`ps`显示当前进程状态,`top`或`htop`提供实时的系统资源监控,`kill`和`killall`用于结束进程,`nohup`使程序在后台运行不受终端关闭影响。 4. 网络通信:`ping`用于测试网络连接,`nc`...
- **后台**:在程序名后面加上`&`符号(例如:`# vi &`),程序将在后台运行,不会阻塞当前终端。 #### 2. 调度启动 系统可以根据预定的时间表自动启动指定的程序,常用的调度工具包括`at`、`batch`和`cron`: - **...
* 监控进程(也称系统守护进程):是 Linux 系统启动时启动的进程,并在后台运行。 kill 命令的工作原理 Linux kill 命令的工作原理是,向 Linux 系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统...