sh sys-snap.sh &
什么sh啊 什么sys-snap.sh啊 为什么我要放在&行尾?谁能解释语法?
没有&脚本,直到按Ctrl+ 之前脚本都不会返回到提示C。随着&我按下Enter键,它的工作原理。
sh sys-snap.sh &
什么sh啊 什么sys-snap.sh啊 为什么我要放在&行尾?谁能解释语法?
没有&脚本,直到按Ctrl+ 之前脚本都不会返回到提示C。随着&我按下Enter键,它的工作原理。
Answers:
sh是默认的Bourne兼容外壳(通常为bash或破折号)
sys-snap.sh是一个shell脚本,其中包含sh执行的命令。由于您不发布其内容,因此只能从其名称猜测其作用。我可以找到与CPanel相关的具有相同文件名的脚本,该脚本将创建一个包含所有当前进程,当前内存使用情况,数据库状态等的日志文件。如果该脚本以shebang行(#!/bin/sh或类似名称)开头,则可以使其可执行与chmod +x sys-snap.sh直接使用启动它./sys-snap.sh,如果它是在当前目录。
由于&进程是在后台启动的,因此您可以继续使用外壳程序,而不必等到脚本完成。如果您忘记了它,可以使用停止当前正在运行的进程,Ctrl-Z并使用bg(在或在前台fg)在后台继续 进行。有关更多信息,请参见作业控制。
sh在通常只bash或dash在基于Linux的系统(或最近的OS / X)。在BSD上,它通常是Ash的另一种变体(破折号基于NetBSD sh,其本身基于Almquist Shell)或pdksh派生。在商业Unices上,通常为ksh88。
&并因此在后台启动,则只会得到一个新的shell提示。
&&与单“&”号有区别&吗?
这被称为job controlunix下。该&通知壳把命令在后台运行。这意味着它将继续运行该sys-snap.sh命令,但是将您返回到外壳程序,以允许您继续执行并行命令。
您可以看到当前正在使用该jobs命令运行的作业列表。您可以使用该命令返回命令(转到'foreground)fg。其拉命令回到你看到没有任何提示的状态,你必须发出Ctrl- C对杀的过程。但是,您可以通过发出- 暂停(暂停)该过程。这将暂停并返回您的提示。然后,您可以后台它(仿佛你已发出它具有的)与命令,将简历从它运行已暂停状态- 已经把它英寸CtrlZsys-snap.sh&bgCtrlZ
请注意,您一次只能完成一项工作(如所示jobs):
[1]- Running sys-snap.sh &
[2]+ Running another-script.sh &
您可以使用他们的工作编号(%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- C到sys-snap.sh。
如果您使用的是bash shell,则该man bash命令的“作业控制”部分下有一个详细部分,以进行更详细的说明。
至于的名称sys-snap.sh,unix下的文件名是任意的(有一些例外,例如动态加载器文件)。不需要它们具有特定的文件扩展名以使它们作为Shell脚本运行,调用其他命令(例如perl或php等)。通常用于提供清晰度,在这种情况下,它是.sh使用Bourne Shell的Shell脚本。/bin/sh。
Shebang是功能部分sys-snap.sh(当您使用less命令查看内容时)。在第一行中,您可能会发现以下情况之一:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
或类似。从根本上讲,运行#!(如/bin/sh)之后的命令,并且脚本文件其余部分的内容一次馈入一行。请注意,该文件还必须设置为可执行文件,chmod以便您可以将其作为命令运行。如果未设置权限,则shebang无效,因为您可能会得到以下错误:
bash: sys-snap.sh: command not found
或者如果您通过显式路径./sys-snap.sh(.即当前工作目录)运行它,则会得到:
bash: ./sys-snap.sh: Permission denied
另一种选择是让它没有执行权限,并明确要求/ bin / sh运行它:
/bin/sh sys-snap.sh &
nohup功能,因为它通常与&启动进程结合使用,并且能够杀死启动它的外壳而不会终止该进程。
jobs如果它是第一个命令,它将总是返回空?
&仅在命令末尾使用会分离stdin(但不会分离stdout或stderr),这意味着如果您的命令/脚本在后台运行但正在写入stdout,您可能会遇到Ctrl + c无法停止输出但可以键入命令。这是因为后台进程正在写入,stdout但由于它不在前台运行而无法停止。更多信息在这里。
sh是一个壳。哪个外壳完全取决于系统。bash用作标准外壳的系统示例:
$ 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)
sys-snap.sh将是某种形式的shell脚本,因此sh sys-snap.sh将执行该shell脚本。
&将导致Shell进程在后台运行。如果没有&它,它将一直停留在前台,直到脚本结束。该脚本将以任何一种方式工作,这只是在执行其他命令之前等待脚本结束还是没有结束的问题。
您的服务器在hostgator中吗?
该脚本sys-snap.sh是由hostgator团队编写的特殊脚本,用于收集系统的所有日志文件和数据,因此他们将其输出用于监视和收集系统信息。
&&与单“&”号有区别&吗?