sh sys-snap.sh &
Run Code Online (Sandbox Code Playgroud)
什么是sh?什么是sys-snap.sh?为什么我应该放在&行尾?谁能解释一下语法?
如果没有&脚本,在我按下Ctrl+之前,脚本不会返回到提示C。随着&我可以按回车,它的工作原理。
jof*_*fel 117
sh是默认的Bourne 兼容 shell(通常是 bash 或 dash)
sys-snap.sh是一个 shell 脚本,其中包含sh执行的命令。由于您没有发布其内容,因此我只能从其名称猜测它的作用。我可以找到一个与 CPanel 相关的具有相同文件名的脚本,它创建一个包含所有当前进程、当前内存使用情况、数据库状态等的日志文件。如果脚本以shebang 行(#!/bin/sh或类似行)开头,则可以使其可执行与chmod +x sys-snap.sh直接使用启动它./sys-snap.sh,如果它是在当前目录。
由于&进程在后台启动,因此您可以继续使用 shell 而不必等到脚本完成。如果您忘记了,您可以使用 停止当前正在运行的进程,Ctrl-Z并在后台使用bg(或在前台使用fg)继续它  。有关更多信息,请参阅作业控制
Dra*_*oan 109
这job control在unix下被称为。该&通知壳把命令在后台运行。这意味着它会继续运行该sys-snap.sh命令,但会将您返回到您的 shell 以允许您继续执行并行命令。
您可以查看当前使用该jobs命令运行的作业列表。您可以使用该命令返回到该命令(带到“前台”)fg。其拉命令回到你看到没有任何提示的状态,你必须问题Ctrl-C对杀的过程。但是,您可以暂停(暂停)该进程,发出Ctrl- Z。这将暂停sys-snap.sh并使您返回到提示。然后,您可以背景,(仿佛你已发出它具有的&)与bg命令,它会继续运行,从它的暂停状态Ctrl-Z已经把它英寸
请注意,您一次可以拥有多个作业(如 所示jobs):
[1]-  Running          sys-snap.sh &
[2]+  Running          another-script.sh &
Run Code Online (Sandbox Code Playgroud)
您可以使用他们的工作编号,%1将是sys-snap.sh和%2将是他们的背景和前景another-script.sh。如果您使用fg或bg不带参数它将对标工作的行动命令+在jobs上面的输出。
fg %1
将放回sys-snap.sh前台,而留another-script.sh在后台。
您可以向正在运行的作业发出Ctrl-C序列,而无需使用kill命令kill %1将它们置于前台,将发送相当于Ctrl- Cto 的内容sys-snap.sh。
如果您使用的是 bash shell,则该man bash命令在标题为“JOB CONTROL”的部分下有一个详细部分,将详细介绍。
至于 的名称sys-snap.sh,在 unix 下文件名是任意的(有几个例外,如动态加载程序文件)。不要求它们具有特定的文件扩展名来使它们作为 shell 脚本运行,调用其他命令,例如perl或php等。它通常用于提供清晰性,在这种情况下,它是.sh使用 Bourne Shell 的 Shell 脚本/bin/sh.
的功能部分sys-snap.sh(当您使用类似less命令查看其内容时)是Shebang。在第一行,您可能会找到以下之一:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
Run Code Online (Sandbox Code Playgroud)
或类似。在基本术语中,运行#!(例如/bin/sh)之后的命令,并且一次一行地将脚本文件其余部分的内容提供给它。请注意,该文件还必须设置为可执行文件,chmod以便您可以将其作为命令运行。如果未设置权限,则shebang无效,因为您可能会收到以下错误:
bash: sys-snap.sh: command not found
Run Code Online (Sandbox Code Playgroud)
或者,如果您通过显式路径./sys-snap.sh(.即当前工作目录)运行它,您将获得:
bash: ./sys-snap.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)
另一种选择是让它没有执行权限,并明确要求 /bin/sh 运行它:
/bin/sh sys-snap.sh &
Run Code Online (Sandbox Code Playgroud)
        sh是一个外壳。具体使用哪个 shell 取决于系统。bash使用作为标准 shell 的系统示例:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 13 16:12 /bin/sh -> bash
$ sh --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)
sys-snap.sh将是某种 shell 脚本,因此sh sys-snap.sh将执行该 shell 脚本。
&将导致 shell 进程在后台运行。如果没有,&它将停留在前台直到脚本结束。无论哪种方式,脚本都会工作,只是在执行进一步的命令之前等待脚本结束或不结束的问题。