Chinaunix首页 | 论坛 | 博客
  • 博客访问: 929602
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2011-04-08 15:26:36

在后台可靠地运行进程

有时会想要在后台运行脚本、实用程序或命令行。然而,大部分系统在用户断开连接或注销时将终止在后台运行的命令,如果想要先登录,启动命令,然后再注销,这时会发现并不是想要的结果。

如果需要重新启动,或者重新初始化后台或没有自动进行守护的守护进程,或者依赖于独立的脚本来开始和管理守护应用程序的执行,在这些情况下命令执行的终止是非常让人沮丧的。MySQL mysqld_safe 脚本是一个很好的例子,它正是以这种方式进行工作的。

要防止应用程序在您注销时自动终止,可以使用 nohup 命令作为要运行的命令行或工具的前缀,如下所示:
  1. $ nohup find/ -name core
复制代码
除非专门为命令的输出进行重定向,否则 nohup 自动将标准输出和标准错误写入当前目录下名为 nohup.out 的文件中。

使用标准重定向可以输出到自己的文件,但请记住,要同时重定向输出和错误流,例如:
  1. $ nohup find/ -name core >/tmp/corefind.out 2>&1
复制代码
我发现自己总是无意识地使用 nohup 来运行任何我认为持续时间将长于 2、3 分钟的命令,即使是在控制台中运行该命令。这可能在很大程度上和输出的自动重定向有关,而不是在连接失败时防止终止的能力。
阅读(979) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~