Tag: bash

如何正确地转义和插入variables在Bash中?

我试图写一个单行程序来转换一些文件中存在的HTML实体(所有的HTML与UTF-8编码) 我试过recode HTML_4.0 file.htm但也转换非ASCII字符(它打破了UTF-8字符) 在StackOverflow中,我发现了一个适用于一个文件的东西: php -r '$f=@fopen("file.htm", "r");echo html_entity_decode(fread($f, 20000));fclose($f);' 但是当我尝试使它与多个文件 for fi in *.htm; do php -r '$f=@fopen("$fi", "r");echo html_entity_decode(fread($f, 20000));fclose($f);';done 我知道这里的问题是如何“逃避”$ fi(bashvariables),所以PHP不会将其读取为PHPvariables。 有什么build议?

为脚本日志条目添加时间戳记

目前我有我的bash脚本使用exec 22>&2 21>&1 1>$log 2>&1将stderr和stdout写入日志文件。 我想为每个条目添加一个时间戳,但我还没有find一个简单的方法来做到这一点。 理想情况下,对当前的命令进行简单的更改,而将其余时间写在同一行上。 以下是我使用以下命令的脚本: #!/bin/bash #This script takes the server to rysnc as an argument. You can also tell #the script to check the server_status.txt file. # #Example: /path/to/script/sync.sh grail true # #The arguments are order senstive. The server name must come before the status #check value. #Logfile LOG=/var/log/sync.log DIRECTORYS="auth/ keys/ […]

我可以在服务/守护程序脚本中使用Bash解释器吗?

我正在编写一个应该在运行级别2-5启动的Debian / Ubuntu服务。 我使用的大多数现有服务都是使用/bin/sh (Shell)解释器编写的,而/bin/bash (Bash)提供了大量的改进和简化。 那么有没有很好的理由避免使用bash ,当目标仅限于debian 6+和Ubuntu 12.04 ? 更新: 我通常将下面的shebang添加到脚本中: #!/usr/bin/env bash

按Ctrl-C停止bash脚本,但不要停止脚本调用的PHP脚本

我需要每隔几分钟运行几个脚本。 这个逻辑是用PHP编写的,而且工作的很好。 为了保持一致,我做了下面的bash脚本,这也运行良好。 #!/bin/bash calculaDiff() { DIFF=0 while [ "$DIFF" -eq "0" ]; do DIFF=`php calculaDiff.php` done; } # need to calculate pending diffs calculaDiff # main loop while true; do CAPTURA=`php capturaRelatorio.php` if [ "$CAPTURA" -eq "0" ]; then calculaDiff fi VERIFICA=`php verificaLimites.php` done 脚本capturaRelatorio.php里面有一个睡眠,因为我只能每隔N分钟处理一次。 它会打印一条消息,说它睡了S秒,所以我可以监控它。 如果我在这个时候调用bash脚本并按Ctrl + C ,当它正在hibernate的时候,它会杀死bash脚本,但是不会杀死被调用的php脚本。 我知道有一个不同的进程运行它。 那么,有没有办法杀死bash脚本和每个“孩子”? 还是应该用另一种方法来运行这些脚本?

普通shell vs subshel​​l vs“bash -c”最后一个命令退出代码

我试图获得与&&和||链接的最后一个命令的退出代码 正确。 我遇到了一个我无法解释的奇怪的行为。 请帮忙。 我使用这个testing脚本来返回给定的退出代码: gdubicki@mbp-greg:~ $ cat exit-code.sh #!/bin/bash echo "running exit-code with $1" exit $1 这按预期工作: gdubicki@mbp-greg:~ $ ./exit-code.sh 1 && ./exit-code.sh 2 && ./exit-code.sh 3 || echo last exit code: $? running exit-code with 1 last command exit code: 1 gdubicki@mbp-greg:~ $ (./exit-code.sh 1 && ./exit-code.sh 2 && ./exit-code.sh 3 || echo […]

在生产中自动优雅地重新装上炮弹

我有一个自动部署工作stream程,将代码推送到我的生产服务器,并触发数据库迁移,静态文件更新等。问题是,gunicorn不会自动重新加载代码更改没有开发选项 – –reload ,他们build议不使用生产。 相反,指令是发送一个HUP信号给masterpid 。 问题是,我不知道如何在自动脚本中检索masterpid ,尽pipe手动操作很简单。 如何在bash脚本中检索gunicorn systemd进程的materpid值?

标准输出到GN​​U屏幕复制缓冲区

在GNU屏幕中是否有一个命令将标准输出引导到复制缓冲区 我一直在使用文件做很多工作,把我想要的文件名复制并转换成命令是很好的 例如 ls | grep过程 $ ls | grep cal calendar.inc-gen.php // enter copy mode $^ay // backward search for gen_chg ? cal // start region SPC //goto to end of file by forward search php php // done ENT // type command line $ git rm ^p // creates $ git rm calendar.inc-gen.php […]

好shell脚本指南

我有Orielly的“学习狂欢”。 我也参考高级Bash脚本指南(tldp.org/LDP/abs)。 还有关于这个主题的其他好书吗?

如何更改OSX Leopard的cron shell

我有一个脚本运行良好,如果我从命令行使用Bash调用它。 但是,当cron试图运行它,它会失败,“mysql:command not found”错误。 我认为这是因为cron没有使用bash,因为它的shell,但我不知道如何使cron使用bash。 我试图将其添加到脚本的顶部: #!/bin/bash 但没有喜乐。 我如何强制cron使用bash作为shell? 我对bash和cron很陌生,所以我可能会错过简单的东西。 我读了几个serverfault文章(将链接到他们所有,但我不能,新用户),试图理解和应用信息尽我所能,再加上googlesearch,但卡住了。

查找不包含目录的目录?

我试图找出如何使用Linux的“查找”命令(或另一个将完成工作的命令)返回不包含某个特定名称的目录的文件path/目录列表。 ~/web/domain1.com/public_html/bar ~/web/domain2.com/public_html/ ~/web/domain3.com/public_html/bar ~/web/domain4.com/public_html/ 我想要所有不包含名为“bar”(domain2.com和domain4.com)目录的path。 任何想法如何find输出这样的列表? 谢谢!

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.