当前位置: 首页 > 面试题库 >

如何将当前正在运行的linux进程置于后台?

施慈
2023-03-14
问题内容

我有一个命令,该命令使用git从Linux Shell将文件上传远程服务器,这将需要许多小时才能完成。

如何将正在运行的程序放在后台?这样我仍然可以在Shell上工作并且该过程也可以完成?


问题答案:

使用CTRL + Z暂停该过程,然后使用命令bg在后台将其恢复。例如:

sleep 60
^Z  #Suspend character shown after hitting CTRL+Z
[1]+  Stopped  sleep 60  #Message showing stopped process info
bg  #Resume current job (last job stopped)

手册页中有关作业控制和bg使用的更多信息bash

作业控制在进程运行时
键入 暂停 字符(通常为^
Z,Control-Z)将导致该进程停止并将控制权返回给bash。[…]用户然后可以使用bg命令在后台继续操作此作业的状态[…]。^
Z立即生效,并具有额外的副作用,导致丢弃待处理的输出和提前输入。


bg [ jobspec …] 在后台
恢复每个暂停的作业 jobspec ,就好像它是由&开头的。如果 不存在 jobspec ,则使用 当前作业 的shell概念。

编辑

要开始一个过程,您甚至可以杀死终端,而终端仍在继续运行

nohup [command] [-args] > [filename] 2>&1 &

例如

nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &

要忽略输出(不是很明智),将文件名更改为 /dev/null

要将错误消息设置为其他文件,请将更改&1为文件名。

另外:您可以使用jobs命令查看这些后台进程的索引列表。您可以通过运行kill %1kill %2将数字作为该进程的索引来杀死后台进程。



 类似资料:
  • 问题内容: 标准方法如下: 在这种情况下,如果跟踪当前进程(例如,使用gdb运行或附加到该进程),则ptrace返回错误。 但这有一个严重的问题:如果调用成功返回,则gdb稍后可能不会附加到它。这是一个问题,因为我没有尝试实现反调试的东西。我的目的是在满足条件(即断言失败)并且gdb正在运行时发出“ int 3”(否则,我会得到SIGTRAP来停止应用程序)。 禁用SIGTRAP并每次发出’int

  • 问题内容: 如何获取Go中当前正在运行的进程的列表? 该OS软件包提供了一些功能:http : //golang.org/pkg/os/, 但没有提供任何内容来查看正在运行的进程的列表。 问题答案: 标准库中没有这样的功能,很可能永远不会。 在大多数情况下,程序不需要进程列表。Go程序通常希望等待一个或更少数量的进程,而不是所有进程。进程的PID通常通过除搜索所有进程的列表之外的其他方式获得。 如

  • ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。 ps 命令有多种不同的使用方法,这常常给初学者带来困惑。在各种 Linux 论坛上,询问 ps 命令语法的帖子屡见不鲜,而出现这样的情况,还要归咎于 UNIX 悠久的历史和庞大的派系。在不同的 Linux 发行版上,ps 命令的语法各不相同,为此,Linux 采取了一个折中的方法,即融合各种不同的风格,兼顾那些已

  • 问题内容: 我需要一个C / C ++ API,该API允许我列出Linux系统上正在运行的进程,并列出每个进程已打开的文件。 我 不 希望最终直接读取的/ proc /文件系统。 有人能想到一种方法吗? 问题答案: http://procps.sourceforge.net/ http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/

  • 问题内容: 我正在寻找一种方法来查看当前正在运行的线程数 首先通过Windows 以编程方式 问题答案: 这将为您提供VM中的线程总数: 现在,如果您希望当前正在执行所有线程,则可以执行以下操作: 这里列举了可能的状态:Thread.State javadoc 如果要查看不是通过编程方式而是通过Windows工具运行的线程,可以使用Process Explorer 。