输入密码后如何将linux终端的作业放到后台?
How can place a job of linux terminal to background after enter password?
我在 linux 终端中使用此命令连接到服务器并将其用作代理:
ssh -N -D 7070 root@ip_address
获取密码并连接,一切正常,但如何将此过程置于后台?
我使用了 CTRL+Z 但它停止了,没有将这个进程置于后台...
尝试在命令末尾添加一个符号:
ssh -N -D 7070 root@ip_address &
解释:
这个尾随的符号在后台将shell指向运行命令,也就是说,它在一个单独的子shell中分叉和运行,作为一项工作,异步。 shell 将立即 return return 状态为 0 并照常继续,要么在脚本中处理进一步的命令,要么 return 将光标焦点返回给用户在 Linux 终端中。
shell 将打印出分叉进程的作业号和进程 ID (PID),如下所示:
$ ./myscript.py &
[1] 1337
分叉进程的标准输出仍将附加到父进程,因此任何输出仍会出现在您的终端中。
在使用单个尾随 & 符号 & 分叉进程后,其进程 ID (PID) 存储在特殊变量 $! 中。这个可以后面参考流程:
$ echo $!
1337
一旦一个进程被分叉,它可以在作业列表中看到:
$ jobs
[1]+ Running ./myscript.py &
并且可以在前台命令完成之前将其带回命令行:
fg
如果您分叉了多个进程,则前台命令采用作业编号的可选参数。
单个 & 符号 & 也可以将命令列表分隔为 运行 异步。
./script.py & ./script2.py & ./script3.py &
在此示例中,所有 3 个 python 脚本同时是 运行,在单独的子 shell 中。它们的标准输出仍将附加到父级 shell,因此如果从 Linux 终端 运行 宁此,您仍然会看到输出。
这也可以用作利用 shell 脚本的多核的快速 hack,但请注意,这是 hack!
要从 shell 中完全分离进程,您可能需要将 stdout 和 stderr 通过管道传输到文件或 /dev/null。一个很好的方法是使用 nohup 命令。
以上解释来源:http://bashitout.com/2013/05/18/Ampersands-on-the-command-line.html
CTRL-Z 正在做它应该做的事情,即停止进程。如果你想把它放在后台,shell 命令是 bg
:
$ ssh -N -D 7070 -l user 192.168.1.51
user@192.168.1.51's password:
^Z
[1]+ Stopped ssh -N -D 7070 -l mjfraioli 192.168.1.51
$ bg
[1]+ ssh -N -D 7070 -l user 192.168.1.51 &
这样你就可以交互式地输入密码,只有在输入完成后,才停止输入密码。
您可以添加选项 -f
使 ssh 命令 运行 在后台运行。
所以答案是ssh -f -D port username@hostname -N
.
我在 linux 终端中使用此命令连接到服务器并将其用作代理:
ssh -N -D 7070 root@ip_address
获取密码并连接,一切正常,但如何将此过程置于后台?
我使用了 CTRL+Z 但它停止了,没有将这个进程置于后台...
尝试在命令末尾添加一个符号:
ssh -N -D 7070 root@ip_address &
解释:
这个尾随的符号在后台将shell指向运行命令,也就是说,它在一个单独的子shell中分叉和运行,作为一项工作,异步。 shell 将立即 return return 状态为 0 并照常继续,要么在脚本中处理进一步的命令,要么 return 将光标焦点返回给用户在 Linux 终端中。
shell 将打印出分叉进程的作业号和进程 ID (PID),如下所示:
$ ./myscript.py &
[1] 1337
分叉进程的标准输出仍将附加到父进程,因此任何输出仍会出现在您的终端中。
在使用单个尾随 & 符号 & 分叉进程后,其进程 ID (PID) 存储在特殊变量 $! 中。这个可以后面参考流程:
$ echo $!
1337
一旦一个进程被分叉,它可以在作业列表中看到:
$ jobs
[1]+ Running ./myscript.py &
并且可以在前台命令完成之前将其带回命令行:
fg
如果您分叉了多个进程,则前台命令采用作业编号的可选参数。
单个 & 符号 & 也可以将命令列表分隔为 运行 异步。
./script.py & ./script2.py & ./script3.py &
在此示例中,所有 3 个 python 脚本同时是 运行,在单独的子 shell 中。它们的标准输出仍将附加到父级 shell,因此如果从 Linux 终端 运行 宁此,您仍然会看到输出。
这也可以用作利用 shell 脚本的多核的快速 hack,但请注意,这是 hack!
要从 shell 中完全分离进程,您可能需要将 stdout 和 stderr 通过管道传输到文件或 /dev/null。一个很好的方法是使用 nohup 命令。
以上解释来源:http://bashitout.com/2013/05/18/Ampersands-on-the-command-line.html
CTRL-Z 正在做它应该做的事情,即停止进程。如果你想把它放在后台,shell 命令是 bg
:
$ ssh -N -D 7070 -l user 192.168.1.51
user@192.168.1.51's password:
^Z
[1]+ Stopped ssh -N -D 7070 -l mjfraioli 192.168.1.51
$ bg
[1]+ ssh -N -D 7070 -l user 192.168.1.51 &
这样你就可以交互式地输入密码,只有在输入完成后,才停止输入密码。
您可以添加选项 -f
使 ssh 命令 运行 在后台运行。
所以答案是ssh -f -D port username@hostname -N
.