标签: shell-scripting

如何在 bash 脚本的文本文件中替换第 6 行?

我有一个由 3rd 方软件生成的文本文件,作为构建过程的一部分。我想替换一个特定的行 - 在我的例子中是第 6 行。我怎样才能在我的 bash 脚本中做到这一点?

我怀疑 sed 是我的朋友,但我现在很困惑。

如果这很重要,我正在使用 Mac OS X 10.6。

bash text shell-scripting

5
推荐指数
1
解决办法
1万
查看次数

Bash-Scripting - Munin 插件不起作用

我写了一个 munin-plugin 来计算 lighttpd 的 http-statuscodes。剧本:

#!/bin/bash

######################################
# Munin-Script: Lighttpd-Statuscodes #
######################################

##Config
# path to  lighttpd access.log
LIGHTTPD_ACCESS_LOG_PATH="/var/log/lighttpd/access.log"
# rows to parse in logfile (higher value incrase time to run plugin. if value to low you may get bad counting)
LOG_ROWS="200000"
#
#munin
case $1 in
   autoconf) # check config
        AVAILABLE=`ls $LIGHTTPD_ACCESS_LOG_PATH`
        if [ "$AVAILABLE" = "$LIGHTTPD_ACCESS_LOG_PATH" ]; then
           echo "yes"
        else
           echo "No: "$AVAILABLE
           echo "Please check your config!"
        fi
        exit 0;;
   config) # graph config
        cat …
Run Code Online (Sandbox Code Playgroud)

munin bash lighttpd shell-scripting

5
推荐指数
1
解决办法
1709
查看次数

Incrond 运行但不执行命令 CentOS 6.4

我已经从 StackOverflow 复制了这个问题...

我已经从 EPEL 存储库 (0.5.9) 安装了 incron(在你问之前;是的,我也尝试下载源代码并在本地编译(0.5.10);相同的结果)并试图在我的 CentOS 6.4 上设置一个进程(最终)我在本地 Ubuntu 12.04 机器上成功原型化的虚拟框(包括incron在 Ubuntu 下完美运行的过程):

前面的一些信息:

  • SELinux设置为PERMISSIVE(我也试过DISABLED,好像没什么区别!)
  • 我已经使用 NOPASSWD 添加了我的脚本并调用了所有可执行文件来visudo解决一些权限问题......
  • 我曾尝试应用此处所描述的 incron 策略http://blog.siphos.be/2013/05/a-selinux-policy-for-incron-finishing-up/但我一直收到

    libsepol.policydb_read: policydb magic number 0x696c6f70 does not match expected magic number 0xf97cff8c or 0xf97cff8d semodule_package: Error while reading policy module from incron.te

    当我尝试使用 semodule_package

  • 我试图caller.sh通过这样做在脚本本身和前脚本中定义环境,我能够env > /tmp/envfile.txt表明脚本正在sudo env(如我预期的那样)的克隆中运行,但是我仍然没有从我的脚本中得到任何输出,它应该在它的输入文件或它的任何日志上做的工作......

  • 应该是权限吧?(我离chmod -r 777在根文件系统上做这件事还有一天的时间;))

  • 在 Ubuntu 12.04 下,执行sudo incrotab -e和输入的简单操作/tmp/ IN_CREATE,IN_NO_LOOP …

permissions selinux cron shell-scripting centos6

5
推荐指数
2
解决办法
2万
查看次数

使用时间戳回显每个 shell 脚本命令

set -xset -v打印每个执行的命令。

如何在命令开始执行时打印命令?

shell bash shell-scripting

5
推荐指数
2
解决办法
3189
查看次数

如何正确处理服务脚本中pid.file的删除

我正在尝试为应用程序编写服务脚本。所以我可以这样控制它:

./myscript.sh start|stop|status
Run Code Online (Sandbox Code Playgroud)

启动时pid.file创建进程 ID,并基于它我可以检查状态并停止进程。在停止命令中我删除了pid.file- 没关系。

但是,如果应用程序以异常方式崩溃 - 关闭电源等,则pid.file不会删除,我需要手动删除它。

如何在脚本中正确处理这种异常情况?

linux shell pid shell-scripting

5
推荐指数
1
解决办法
2万
查看次数

Unix将多个命令分开,最后有'&'(在后台执行)

在 Unix 中分隔常规命令是将分号放在最后,如下所示:

cd /path/to/file;./someExecutable;
Run Code Online (Sandbox Code Playgroud)

但它似乎不适用于这样的命令:

./myProgram1 > /dev/null &
./myProgram2 > /dev/null &
=>./myProgram1 > /dev/null &;./myProgram2 > /dev/null &;
Run Code Online (Sandbox Code Playgroud)

有没有办法将这些命令分开?

另外,如果我将粘贴复制到命令提示符,以下两种情况是否相同?谢谢。

cd /path/to/file;./someExecutable;

cd /path/to/file;
./someExecutable;
Run Code Online (Sandbox Code Playgroud)

linux unix shell bash shell-scripting

4
推荐指数
2
解决办法
6691
查看次数

简单的挖掘输出?

在脚本中,我希望能够轻松地将 IP 地址写入某个地方,所以我想使用带有反引号的 dig(或类似命令)。

然而,我已经能够提出 wrt dig 参数的最简单的输出是

> dig -t A +noall +answer www.google.com
www.google.com.     300 IN  A   173.194.66.106
www.google.com.     300 IN  A   173.194.66.104
Run Code Online (Sandbox Code Playgroud)

有什么办法(额外的参数,不同的工具而不是挖掘?)来摆脱 IP 地址之外的垃圾?(并且请不要告诉我使用 sed。

谢谢

domain-name-system dig nslookup shell-scripting

4
推荐指数
1
解决办法
4970
查看次数

从 linux shell 脚本访问 windows 文件系统

我想知道,是否可以从 Linux 系统上的 shell 脚本访问 Windows 文件?我想要做的是在我的 Linux 系统中运行一个 shell 脚本,它将访问远程 Windows 系统的文件,读取它们并操作它们。忘记文件和文件夹权限。

是否可以使用 Linux shell 脚本(或 perl 脚本)来做到这一点?

linux windows shell-scripting

4
推荐指数
1
解决办法
4726
查看次数

Shell 脚本:子进程不会在 linux 中终止

我写了一个shell脚本来同时启动三个后台进程。在 shell 脚本中,我试图等待所有孩子完成他们的工作,然后父工作终止。但是,出于某种原因,我看到睡眠过程永远不会醒来。

echo "Starting $1 instances" >> $logfile
for i in `seq 1 $1`
do
        /usr/bin/php index.php name&
done

echo "Waiting for all $l instances to complete \n" >> $logfile
wait
echo "All $instances scripts completed"  >>  $logfile
Run Code Online (Sandbox Code Playgroud)

multiprocessing shell-scripting

4
推荐指数
1
解决办法
1294
查看次数

如何在每个月的第二天到最后一天安排 Cron 作业

我想在每个月的倒数第二天安排一项任务。我已经阅读了这篇关于 shell 脚本执行的好文章。我还看到您可以使用“L”来表示月份的最后一天,但我使用的是CentOS 并且不能使用“L”构造

我想在每个月的倒数第二天晚上 11 点运行任务。我希望构造一个类似于:

0 23 27-30 * * [ "$(date +%d -d tomorrow" = "L" ] && $HOME/path/to/script
Run Code Online (Sandbox Code Playgroud)

知道我不能用 L 来代表一个月的最后一天,我如何使用这个逻辑来安排我的 Cron 工作?

centos cron shell-scripting

4
推荐指数
1
解决办法
1801
查看次数