Articles of shell

如何杀死一个无用的while循环?

所以我做了这样的事情: $ while true; do ssh sysremote -CN; done & disown % 在ps -ef只列出了ssh sysremote -CN 。 我如何杀死while循环?

如何通过InstanceID寻址特定端口来获取防火墙规则的名称

我试图确定所有的防火墙规则,这是处理特定的端口。 这是我可以如何手动做到这一点: Get-NetFirewallPortFilter | Where { $_.LocalPort -Eq "RPC" } ` | Format-Table -Property InstanceID 现在我需要知道规则的名称: Show-NetFirewallRule | Where { $_.InstanceID –Eq “Netlogon-TCP-RPC-In”} ` | Format-Table -Property DisplayName 然后我得到: DisplayName ———– Netlogon Service Authz (RPC) 我不想手动做 我试过下面的脚本来获取名称列表: $InstanceIDs = Get-NetFirewallPortFilter | Where { $_.LocalPort -Eq "RPC" } ` | Format-Table -Property InstanceID foreach ($InstanceID in […]

父bash脚本没有收到“陷阱”,尽pipe进程仍在运行

我实际上想要实现的是: 我试图让一个自定义的守护进程在使用SysVinit的系统上工作。 我已经有引导程序/etc/init.d/xyz脚本,它调用我的守护进程,但它不会自动将它放在后台。 这类似于nginx这样的服务:二进制背景本身 – 也就是说,不是/etc/init.d/nginx脚本负责守护进程,所以如果直接运行/opt/nginx/sbin/nginx也会遇到守护进程/后台执行。 问题 我的问题是,使用我当前的方法,该守护进程不会终止与父进程(这是什么被终止时,你叫service xyz stop )。 我正在使用运行daemon.sh &脚本的父launcher.sh脚本。 然而,当我杀死launcher.sh , daemon.sh继续运行,尽pipe我尽了最大的努力与trap (它从来没有被称为): – > launcher.sh #!/bin/bash function shutdown { # Get our process group id PGID=$(ps -o pgid= $$ | grep -o [0-9]*) echo THIS NEVER GETS CALLED! # Kill process group in a new process group setsid kill — […]

不要在bash上工作循环

我已经在bash上写了脚本。 它获得了所有的接口列表。 并在循环中与variables进行比较。 但是这并不好。 我的脚本: #!/bin/bash search=`ls -1 /sys/class/net | grep -v lo` echo $search eth=eno1 echo $eth for i in $search; do if [ $i == $eth ]; then echo "You choose is: $i" else echo "not found" fi done 结果我有: dummy0 eno1 enp4s0 virbr0 virbr0-nic eno1 not found You choose is: eno1 not […]

控制bash工作作为一个组?

有一种方法来控制给定的bash会话中的一组作业吗? 理想情况下,我想说的是: $ prog1 & $ GROUP=FOO prog2 & $ GROUP=FOO prog3 & $ GROUP=BAR prog4 & 然后有例如kill %FOO只终止prog2和prog3 。

删除不包含文件名匹配glob / regex的所有文件夹

我想要做以下事情。 我有深度2文件层次结构像这样: A | B | | g | | h50000 | C A,B,C是文件夹。 我想删除所有没有匹配特定模式文件的文件夹(在我的情况下, 50000是模式,glob风格)在深度级别2(在这个例子中,文件夹C只应该被删除,除了内容,而A仍然) 在我的应用程序,我很好,如果我删除所有的文件夹都没有包含文件名匹配模式的文件夹。 (如果不指定要删除哪个深度,将会更容易删除A)。 我怎么能在Linux机器上的bash中做到这一点?

使用Powershell映射主文件夹将其设置在AD中,但是除此之外别无其他

我想我的Active Directory用户有自己的主文件夹来存储他们的文件,我想通过PowerShell为每个用户帐户设置此。 我已经尝试了几件事情,但它所做的只是将AD中“profile”下的设置更改为homefolder位置,而这似乎并没有显示给用户login时。我试过的一些代码: SET-ADUSER inggul –HomeDrive 'P:' –HomeDirectory '\\WIN-L372AGVF8AI\NewHome\$Inggul' $users = Get-ADUser -SearchBase "ou=sAdminOU,dc=kossi,dc=local" -Filter * -Properties Department foreach ($user in $users) { Set-ADUser $_.SamAccountName -HomeDrive "Z:" -HomeDirectory "\\WIN-L372AGVF8AI\NewHome\($_.SamAccountName)" }

powershell列出所有具有组成员身份的活动域用户

我如何获得所有组成员身份和每行一个用户的活跃域用户列表? 我努力了: Import-Module Activedirectory Get-ADUser -Filter 'enabled -eq $true' -Properties SamAccountname,DisplayName,memberof | % { New-Object PSObject -Property @{ UserName = $_.DisplayName Groups = ($_.memberof | Get-ADGroup | Select -ExpandProperty Name) -join ","} } | Select SamAccountname,UserName,Groups 但SamAccountname是空的。

如何编写标准输出和错误logging和从exec

例如,将标准错误和标准输出写入$ LOG。 但是这不会打印任何东西到标准输出(在控制台上) #!/bin/bash LOG=/var/tmp/log #… exec > $LOG 2>&1 我的目标是写任何标准输出和标准错误,但在同一时间标准输出(在控制台上)$ LOG。 可能吗?

在另一项服务启动后执行服务

我已经安装了MySQL NDB集群。 它需要大约2-3分钟才能在集群节点之间同步数据库。 一旦同步完成,我可以启动另一个名为heartbeat的应用程序。 因此,在我的shell脚本中,我想一直检查ndbd服务的可用性。 一旦这个服务可用,我需要在五分钟内启动心跳应用程序。 你能帮我写剧本吗?