Articles of bash

一旦terminalclosures,如何确保脚本及其命令被杀死

我写了一个脚本,它工作正常。 它做一些尾巴和grep操作。 当我closuresterminal并对脚本的PID进行写入时,我发现脚本仍然出现在“ps -eaf | grep -i myScript.sh”的输出中。 但是,我不希望这种行为。 我需要知道,我该如何处理这种情况。 我不想通过我的脚本给CPU造成负担。 请告诉我。 我search谷歌,我最主要的发现“如何保持脚本运行在后台”。 但是我无法得到任何关于停止它的精神。 提前致谢。 user 9405 18803 0 07:32 pts/72 00:00:00 grep 29735 user 29735 11903 0 07:24 pts/30 00:00:00 sh myScript.sh user 29818 29735 0 07:24 pts/30 00:00:00 tail -f –pid=29735 /var/log/message user 29830 29735 0 07:24 pts/30 00:00:00 -csh

httpd在bash中作为第二个命令重新加载失败

我试图运行一个命令,执行一个动作,更新证书,然后重新加载Apache。 要做到这一点,我运行以下: sudo /home/ec2-user/letsencrypt/letsencrypt-auto –config /home/ec2-user/letsencrypt/cert.ini certonly –debug && service httpd reload 这给了我以下内容: Updating letsencrypt and virtual environment dependencies…… Requesting root privileges to run with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt –config /home/ec2-user/letsencrypt/secure_textinconfidence_com.ini certonly –debug Version: 1.1-20080819 Version: 1.1-20080819 IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/secure.textinconfidence.com/fullchain.pem. Your cert will expire on 2016-05-03. To […]

如何自动完成terminal中的长文件名

如果我在当前目录中有一个长名称以“build”开头的文件,我可以在控制台“build”中编写,按Tab和自动完成types全文件名为我。 但是,如果我有多个文件开始build自动完成不起作用 – 它只是给我一个文件列表开始build 。 相反,在Windows中按Tab键会立刻给我第一个文件的完整文件名,如果我第二次按下Tab键,它会给我第二个文件名。 如何在Linux中像在Windows中自动完成文件名? PS:它真的很糟糕,如果我有几个长文件名只有扩展名有所不同。

在一台机器上使用shell脚本在多台linux机器上安装一个软件

我将使用ssh-puttylogin到一个Linux实例,我的目标是在5台Linux机器上安装一个软件(例如:我需要下载oracle并安装它),当我在一台机器上运行该脚本软件时安装在所有机器上

检查连接到Web服务器端口80和443的数量

正如标题所示,如何检查端口80 和 443上的Web服务器的打开连接数? 我目前使用这个oneliner来获得每个IP地址从80端口打开连接的数量: netstat -tn 2>/dev/null | grep :80 | grep -i established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head 如何将端口号443添加到此查询? 我已经尝试了以下内容: netstat -tn 2>/dev/null | grep ':80/|:443' | grep -i established | awk '{print $5}' | cut -d: -f1 | sort | […]

添加/ etc / environment会导致bash失败

在RHEL 6.7上,我添加了文件/ etc / environment: JAVA_HOME="/opt/jdk1.8.0_91" JRE_HOME="{JAVA_HOME}/jre" M2_HOME="/usr/local/apache-maven" M2="{M2_HOME}/bin" PATH="{JAVA_HOME}/bin:{JRE_HOME}/bin:{M2}:{PATH}" 现在login,bash提供了以下错误: -bash: id: command not found -bash: id: command not found -bash: id: command not found -bash: uname: command not found 删除或重命名/ etc / environment会导致问题消失。 注意:我不想使用/ etc / profile,因为我希望这些设置可用于非交互式shell。

我可以使用`-f`标志过滤`tail`的输出吗?

我想要在RHEL 6.8中使用access_log的输出,但是使用pipe和grep作为filter。 有这样的select吗? 这是我想从现场输出: # tail -f error_log | grep <<ON.THIS.IP.ADDY>> 目前我正在做类似这样的事情,但它很笨拙: watch -n 5 'tail -n 10 access_log | grep <<ON.THIS.IP.ADDY>>'

AIX上不带date-d的时间戳比较

我在AIX 7上有一个运行数据库查询的bash脚本,我得到的输出是以下格式的时间戳:201607130319 现在我想将时间戳与当前时间(date+%Y%m%d%H%M – 201607201802)进行比较,并以分钟为单位查看差异。 我基本上需要知道差异是否超过10分钟。 我知道我可以使用date -d在Linux上执行此操作,但在AIX上不可用。 我不能在服务器上安装任何东西,所以我的select是什么?

如何正确使用bash中的“nohup”和“&”作为另一个用户来运行程序

过去几个月,我一直在学习bash和linuxpipe理,同时生产越来越多的需要在后台运行的代码。 理想情况下,我希望使我的开发系统更接近于生产环境,以避免由于安全和权限问题而重新开发代码。 一般来说,我会运行的东西: $nohup <program> <program args> >> <program logfile> 2>&1 & 即: $nohup ping 192.168.0.1 >> ping.log 2>&1 & 然而,今天我试图通过创build一个用户,并给予他们正确的权限,只能够访问自己的文件,没有别的正确的设置。 这似乎是一个明智的安全做法。 我会这样做: $sudo -u <program user> nohup <program> <program args> >> <program logfile> 2>&1 & 但是,当我运行ps aux | grep <program>时会导致以下输出 ps aux | grep <program> : <admin user>@server:~$ ps aux | grep <program> root […]

从chmod的其他目录运行web服务器的bash脚本

我想从networking服务器chmod的其他文件夹运行一个bash脚本。 我的bash文件(它由root:www-data拥有root:www-data , chmod 775 ): #!/bin/bash chown root:www-data /etc/cron.d/gtest chown root:www-data /etc/cron.d/teststtest 运行bash脚本的php文件: <?php exec("/var/www/html/script/script.sh"); ?> 当我用rootlogin的时候,从命令行(putty)运行这个文件 – 没关系。 但不能从networking服务器运行。 它运行,但不chown。 任何解决scheme