我正在编写一个脚本,其中我需要测试一个字符串,并根据其结果我将决定是否进一步进行。
下面的命令工作正常(如果字符串以“Clean”开头,它将打印 1,否则打印 0)。
echo | awk ' {print index("'"${task}"'", "Clean")}'
Run Code Online (Sandbox Code Playgroud)
我想做的是在 BASH 脚本中使用 AWK 和 IF 。基于这篇文章,我做了以下工作:
idx=$(awk '{print index("'"${task}"'", "Clean")}')
echo $idx
if [ "$idx" == "0" ]; then
echo hello
fi
Run Code Online (Sandbox Code Playgroud)
正如我所说,当我运行脚本时,它会打印“0”,但第二个“echo”不会打印任何内容,当然 if 也不起作用。
谁能帮我?
TIA,
鲍勃
我的系统经常出现磁盘空间不足的情况。我将编写一个脚本来清理变大的目录。通常这些是日志目录。鉴于机器的性质,我不需要保留日志。
我想编写一个脚本来显示所有大小不断增加的目录,这样我就可以确保该列表变为 0。
我在想这样的事情
1. du /
2. wait 24 hrs
3. du /
4. find all instances where the file size increased
Run Code Online (Sandbox Code Playgroud)
它看起来很简单,但我的问题是 du 适用于文件和目录,你不能仅适用于目录。我怎样才能克服这个问题?
有没有办法授予用户(确切地说是www-data)访问权限以仅访问“docker检查”?任何可行的解决方案都是可以接受的
下面是一个 bash 脚本,它计算 Linux 机器上可用总 RAM 的 80% 作为整数:
server_ram_mb=$(awk '/MemTotal/ {printf( "%.2f\n", $2 / 1024)}' /proc/meminfo)
echo "($server_ram_mb * 0.8)/1" | bc > /tmp/output
eighty_percent_ram_mb=$(cat /tmp/output)
Run Code Online (Sandbox Code Playgroud)
然而,有一些我不喜欢的事情:
bc,但并非所有 Linux 发行版都默认安装我如何重写/简化它以避免这些问题?
我正在尝试使用标准 unix date(1) 创建一个符合 HTTP 1/1 的日期标头,以便使用curl 或类似工具将其发布到 RESTful 服务器。
有什么想法可以传递给 date(1) 以使其符合 RFC 1123 要求吗?
非常感谢
我的问题主要基于此 /sf/ask/1573574201/?rq=1
我遵循上述问题,并且能够连接到服务器,如下所示:
mkfifo CMDs.txt
exec 7> CMDs.txt
Run Code Online (Sandbox Code Playgroud)
然后从另一个终端我连接到服务器,如下所示:
sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt
Run Code Online (Sandbox Code Playgroud)
会话已建立,但它不是交互式会话(它应该是)。但我可以通过将命令重定向到文件描述符 7 来将命令发送到远程服务器,如下所示:
echo "some command" >&7
echo "some more command" >&7
Run Code Online (Sandbox Code Playgroud)
这工作正常并显示我启动会话的另一个终端中的输出。我的目标是发送命令,并捕获变量中每个命令的输出,以便我可以在发送另一个命令之前对其进行分析。我认为通过阅读标准输出应该可以实现,但我无法弄清楚,因此发布了问题。我可以通过将输出重定向到文件中来捕获文件中的输出,如下所示:
sshpass -p 'mypass' ssh -tt myuser@${IP} < CMDs.txt >>outfile.txt
Run Code Online (Sandbox Code Playgroud)
也如参考问题中提到的,exec 7>&-应该终止会话,但它没有,那么在发送所有命令后如何终止会话?
我在“alfred”拥有的目录中有一组文件。快速查看了一下,里面的大部分文件也都是‘alfred’所有。
我想将文件夹的所有权以及“alfred”拥有的所有内容更改为“betty”拥有。但是,“alfred”可能在此目录中包含他确定应由其他用户拥有的文件。例如,可能有一个脚本除非由“root”拥有否则不会执行,或者一个目录符号链接到“chris”拥有的区域,因此内部的内容需要由“chris”拥有。
如何找到除“alfred”之外的用户拥有的顶级目录的所有文件和文件夹?
这个问题是类似的,但给出的答案仅涵盖当前用户不拥有的东西的情况。我想找到不属于任何指定用户的东西。
您是否对默认的 bash 重新配置脚本进行了任何有助于其他人了解的更改?
请注意,/etc/bashrc 会影响所有用户,而用户主目录中的 .bashrc 只会影响该用户。
在我们其中一台服务器的 apache 错误日志 (/usr/local/apache/logs/error_log) 中,我们看到一个 shell 命令经常运行并抛出错误,如下所示:
sh: list_price: command not found
Run Code Online (Sandbox Code Playgroud)
list_price 是我们在 50 多个网站上的电子商务系统中使用的一个字段,当然没有任何可疑之处。问题是我们不知道这是如何传递给 shell 的——我们已经检查了 exec() 和 system() 的所有出现,但我们看不出这是如何传递的。有什么方法可以让我们更容易地检测到它的来源可能是什么,因为没有什么比我上面所说的更有意义的输出了。仅供参考,这是在运行 CentOS 5 的服务器上,有问题的站点都是 PHP。
我在用
ps -ef | grep java | wc -l
Run Code Online (Sandbox Code Playgroud)
查找在任何给定时间运行的 java 进程数。
上面的命令显然也在结果中计算了“ps -ef | grep java”命令。
为了避免这种情况,我发现我可以使用
ps -ef | grep [j]ava | wc -l
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是,我想弄清楚为什么它能够从结果中跳过原始命令。