我正在尝试编写一个强大的 bash 脚本,并在其中创建一个后台进程。在脚本的最后,我想杀死它。我有它的PID。
我在想这样的事情
while [[ ps ef $PID ]] ; do
kill $PID
sleep 0.5
done
Run Code Online (Sandbox Code Playgroud)
有什么更好的建议吗?这种方法有什么可能的问题吗?
任何人都知道获取一系列服务标签信息的方法,戴尔在他们的网站上是否有一个部分?我也愿意接受任何 Perl/Python 库或 *nix shell 脚本。
现在我最想要的是每个标签的某种日期。
是否有可能阻止任何用户不使用诸如 ls、rm 和其他可能损害系统的系统命令之类的命令。但是用户应该能够执行shell程序。
我在 Win2003 服务器上共享驱动器上的文件上运行了一些脚本。
我需要查看我们网络中任意数量 PC 上的图像..所以每次我浏览这些文件夹时,客户端都会创建 thumbs.db,这会干扰我们移动和删除文件夹的脚本,但通常无法这样做,因为“thumbs.db 正在使用中”。
即使我在我使用的任何客户端机器上关闭我的文件夹/图像预览也是如此。
所以我想完全禁用 thumbs.db - 但是有没有办法在服务器上这样做,所以我不必担心客户端机器注册表设置等?
我需要一个进程的 pid 给定它的所有者和它的命令。我可以使用“ps -u xxx”和它的命令“ps -C yyy”过滤每个用户的进程,但是当我尝试“ps -u xxx -C yyy”时,它们使用OR逻辑组合。我需要 AND 逻辑。我怎样才能做到这一点?
我编写了一个脚本来在 Nginx 上创建新的虚拟主机。该脚本创建 Ningx vhost 配置文件、vhost 用户和目录、php-fpm 池文件。
在脚本的末尾,我想在重新启动 php-fpm 之前检查配置是否正常。对于 Apache,我可以apachectl graceful,但是可以用 做类似的事情php5-fpm -t吗?
我们在 IIS 7.5 上遇到了一个问题,我们有一个简单的部署系统,它包含以下内容:
创建一个新的 webroot 的 zip 文件,包含三个文件夹:
Api
Site
Manager
Run Code Online (Sandbox Code Playgroud)
它被解压到一个新文件夹中(假设我们称之为“SITE_REV1”),并包含一个调用以下内容的脚本(每个 webroot 一个):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
这通常工作,在 9/10 倍。在某些情况下,webroot 似乎已正确更新(如果我检查 IIS 管理器中的基本设置,路径看起来是正确的),但有问题的运行站点实际上指向旧位置。我们设法“修复它”的唯一方法是运行 IIS 重置。仅回收有问题的应用程序池是不够的。
有时似乎甚至有必要重新启动,但我不能 100% 确定这是准确的(并非总是我自己在解决问题)。
我使用 Powershell 和 Web-Administration 模块重写了脚本,希望 appcmd 中存在故障,但发生了同样的问题。
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
有没有人经历过这样的事情?有没有人知道发生了什么,我可以尝试做些什么来防止这个问题?执行 IIS 重置对我们来说并不是一个好的选择,因为每次我们尝试在单个站点上部署更改时,这都会影响服务器上的所有站点。
编辑:我们已经确定在 IIS 管理器中启动/停止站点(而不是应用程序池)可以解决错误的物理路径,但是如果我使用 appcmd 停止站点,更改物理路径,然后启动它,我仍然遭受同样的问题。我在一片空白...
Copy-item cmdlet 没有按预期工作,我不明白为什么。这是我的代码:
$Source = "C:\folder1"
$Destination = "\\172.22.0.115\c$\folder2\"
$Password = ConvertTo-SecureString -AsPlainText -Force -String "MyPassword"
$User = "Domain\Administrator"
$credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user,$password
Copy-Item $Source -Destination $Destination -Credential $credentials
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
The FileSystem provider supports credentials only on the New-PSDrive cmdlet. Perform
the operation again without specifying credentials.
At C:\Sans titre2.ps1:7 char:1
+ Copy-Item $Source -Destination $Destination -Credential $credentials
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotImplemented: (:) [], PSNotSupportedException
+ FullyQualifiedErrorId : NotSupported
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
Start-BitsTransfer -Source $source -Destination $Destination …Run Code Online (Sandbox Code Playgroud) scripting windows powershell windows-server-2012 windows-server-2012-r2
我正在使用 SCCM 2012 应用程序部署来安装软件。特定的安装类型是脚本安装程序,因为 SCCM 一直因 exe 验证错误而失败。该脚本是 powershell,即使由 SCCM 执行也能成功安装软件。
问题是 SCCM 只能从脚本的完成中看到 0 的返回。我试过write-host, return, write-output, 和只是一个带有软重启代码的行项目。SCCM 似乎没有读取它们,因为应用程序执行日志捕获了 0 的返回值。
您如何从 powershell 输出返回代码,以便 SCCM 可以解释它们?
我需要使用 openssl 在 shell 脚本中执行一些 HTTP GET 请求。我现在用来执行此操作的行如下所示。这是解析以下格式的 XML 响应的内容。
<Result>success</Result>
<Result>failure</Result>
echo -e "GET /test HTTP/1.1\r\nHost:$(hostname)\r\n\r\n" | openssl 2>&1 s_client -quiet -connect server-url:443 | grep -o -P --color '(?<=Result\>).*(?=\</Result)'
Run Code Online (Sandbox Code Playgroud)
这有效并相应地返回字符串“成功”或“失败”。我面临的问题是该openssl命令在执行 GET 请求后不会终止,而是坐在那里等待更多输入。我相信这是由于隐式的-ign_eof,它阻止了由-quiet选项引起的自动终止。我已经尝试使用该-no_ign_eof选项,但这会导致openssl命令在 GET 请求收到响应之前终止,因此如果我使用它,我将无法获取响应的内容。
如何修改此命令,以便我可以通过 stdin 传递 GET 请求(因为我想将其放入循环中是必需的),但openssl在每次请求后都会终止该命令?