Articles of shell

用php在后台执行一个shell脚本

我需要执行一个shell脚本。 赶上是我想要做到这一点 $Command = "nohup cvlc input –sout '#transcode {vcodec=h264,acodec=mp3,samplerate=44100}:std{access=http,mux=ffmpeg{mux=flv},dst=0.0.0.0:8083/".output"}' &"; $str = shell_exec($Command); 我不希望它等到命令完成后,我希望它在后台进程中运行。 我不希望另一个PHP线程,因为它会超时命令可能需要3个小时才能完成。

用ssh杀死远程进程

我不能直接访问目标主机,需要ssh作为代理。 我怎样才能杀死一个进程从本地使用SSH? 我试试这个: ssh root@$center "ssh root@$ip \"ps -ef|grep -v grep|grep $target_dir/$main|awk '{print \$2}'|xargs kill\"" 它得到错误: kill: can't find process "root" 以及如何避免过程不存在的错误?

用一个string代替shell中的variables

我将一个string作为parameter passing给一个shell脚本。 而shell脚本应该告诉我,如果传递的参数是一个variables 像这样的东西 if [ ! -z ${$1} ] ; then echo yes! $1 is a variable and its value is ${$1} fi 但这给我不好的替代err .. 我绝对知道我错过了什么..帮助我! 例如用法: $ myscript.sh HOME yes! HOME is a variable and its value is /home/raj

在shell脚本中使用只读variables

是否使用只读variables的shell编程习惯是否可行或者是否有缺陷? 例如,如果我想写一些由多个使用不可变文件path的脚本文件组成的脚本,那么声明这样的path是否有意义: readonly LOGS export LOGS LOGS="/some/path" 另一个问题:将单独和繁琐的过度阅读的shell脚本代码分割成单独的文件是一个好主意吗? 非常感谢您的答复。

在Shell脚本中杀死进程

我有一个非常简单的问题:当我运行一个shell脚本,我启动一个运行在无限循环的程序。 过了一段时间,我想停止这个程序,然后再用不同的参数再次执行。 现在的问题是如何在执行时find程序的pid? 基本上,我想要做这样的事情: echo "Executing app1 with param1" ./app1 param1 & echo "Executing app1" ..do some other stuff #kill somehow app1 echo "Execution of app1 finished!" 谢谢!

使用Shell脚本检查数据库连接

我正在尝试编写一个shell脚本来检查数据库连接。 在我的脚本中,我正在使用该命令 sqlplus uid/pwd@database-schemaname 连接到我的Oracle数据库。 现在我想要保存这个命令生成的输出(在下降到SQL提示符之前)在一个临时文件中,然后从这个文件中grep /findstring“Connected to”来查看连接是否正常。 任何人都可以请帮我赶上输出,并提出了这个提示,并testing连接是否正常?

通过Bash / Shell在Crontab中启用/禁用任务

有没有办法使用Bash / Shell来启用和禁用Crontab任务? 所以当用户启动服务器1时,它将启用服务器1 Crontab线等等。 当用户停止服务器1时,服务器1 Crontab行被禁用(#)。 这是可能的和如何? 提前致谢 */1 * * * * Server 1 check */1 * * * * Server 2 check */1 * * * * Server 3 check

bash脚本中$ @和$ *的区别

下面有4个bash片段。 我用./script.sh abc调用它们 for arg in $@; do echo "$arg" done ## output "a\nb\nc" for arg in "$@"; do echo "$arg" done ## output "a\nb\nc" — I don't know why for arg in $*; do echo "$arg" done ## output "a\nb\nc" for arg in "$*"; do echo "$arg" done ## output "abc" 我不知道$@和$*之间的确切区别是什么, 我认为"$@"和"$*"应该是相同的,但它们不是。 为什么?

在Linux中禁用历史logging

要在Linux环境中禁用历史logging,我已经执行了以下命令: export HISTFILESIZE=0 export HISTSIZE=0 unset HISTFILE 这样的命令组合是否足够,或者我还必须执行history -c或其他东西? 即使重新启动服务器,这种情况是否会使历史logging被禁用,或者在重新启动后需要执行这些命令?

用空格循环数组string

我试图通过包含其他数组的数组循环,这些数组由包含空格的string组成。 问题是,我似乎无法保留string中的间距。 如果我将IFS更改为\ n,或者将数组的所有元素都视为1项,如果我将IFS保持不变,则这些包含空格的string将被分成多个项目: #!/bin/sh low1=("AA QQ" "BB LL") low2=("CC" "DD") low3=("EE" "FF") high=(low1 low2 low3) for high_item in ${high[@]} do eval arrayz=\${$high_item[@]} #IFS=$'\n' for item in $arrayz do echo $item done done 输出: AA QQ BB 二 CC DD EE FF 正如你所看到的,“AA QQ”和“BB LL”的元素已经被拆分了。 如果我取消注释将IFS设置为\n的行,我会得到以下结果: AA QQ BB LL CC DD EE FF 现在“AA […]