Articles of bash

在bash shell脚本中放入一个进程

我有一个简单的shell脚本 #!/bin/bash sh -c "sleep 60" & exec sleep 120 在使用pstree命令时,我发现了类似的东西 `-sleep(11681)—sleep(11682) 第一次睡觉是由于sh -c ,所以即使我在后台执行了这个睡眠,现在在我的exec的睡眠中exec这个睡眠。 问题:如何解除第一次睡眠并使pstree具有类似的function -sleep(11681) -sleep(11682)

BASH:bz2将gzip转换为find

我想将muliply bzip2文件转换为gzip格式。 我用foor loop完成了这个,但我想用find来做同样的事情: BASH for循环: for i in $(ls -1 *.bz2); do echo "Converting: $i to ${i%.bz2}.gz"; { bunzip2 -c $i | gzip > ${i%.bz2}.gz; }; done 我尝试了这样的事情,但它不起作用: find . -name "*.bz2" -type f -exec bunzip2 -c {} | gzip > ${1%.bz2}.gz \;

无法pipe道回声到netcat?

我有以下命令: echo 'HTTP/1.1 200 OK\r\n' | nc -l -p 8000 -c 当我curl localhost:8000我没有看到HTTP / 1.1 200 ..正在打印。 我使用netcat 0.7.1在mac os x上 有任何想法吗? #!/bin/bash trap 'my_exit; exit' SIGINT SIGQUIT my_exit() { echo "you hit Ctrl-C/Ctrl-\, now exiting.." # cleanup commands here if any } if test $# -eq 0 ; then echo "Usage: $0 PORT" echo […]

为什么printf和sudo的工作方式不一样?

我有一个简单的脚本来转换一个文本文件的颜色转义序列到实际的字符。 它工作,如果我直接运行它,而不是与sudo。 设置脚本: 的test.txt \e[1;34mTEST\e[0m\n test.sh (+ x) printf "`cat $1`" > test.bin 运行./test.sh test.txt然后cat test.bin给出蓝色的TEST 。 运行sudo ./test.sh test.txt然后cat test.bin给出\e[1;34mTEST\e[0m\n 这里发生了什么? 笔记: 运行sudo bash -c "./test.sh test.txt"给出正确的输出 – 为什么? echo -e行为与printf相同

为什么部署sh脚本不会失败nginx重新加载失败?

我有sh脚本重新启动nginx,如下所示: #!/bin/sh -e set -e error_exit() { d=$(date '+%D %T :: ') echo "$d Error: $*" >&2 exit 1 } if ! sudo service nginx reload then # Exit with error error_exit "Could not reload nginx" fi echo "Deployment Done!" 但我的问题是脚本继续执行事件,如Reloading nginx configuration nginx [fail]并达到Deployment Done! 回声。 似乎情况总是true 。 那么,如果nginx重装失败,我怎么能停止执行bash脚本呢?

在远程服务器上执行本地function代码

我正在更新大约20个执行各种服务器端操作任务的bash脚本,检查状态/发送报告等。在某些环境中,这些脚本将在本地运行,而其他脚本则需要远程运行。 脚本应该检测他们是否需要远程或本地运行,并“做正确的事情” #!/bin/bash # Generate the foo report execute_host=appdev7 if [[ "$execute_host" != "$(hostname)" ]]; then # ssh-agent will provide passwordless logon ssh "$execute_host" < $0 else # run report echo "Report" fi 一些脚本使用共享函数和环境variables。 我可以使用ssh SendEnv选项传递环境variables,但我无法弄清楚在远程运行时使共享函数可用的好方法。 ./shared.sh # Shared functions and variables export report_host="appdev7" function run_report() { # run report echo 'Report' } 。/例 #!/bin/bash […]

本地拒绝login通过LDAP进行身份validation的用户

我有一个RedHat Linux服务器,用于超过1000个用户 用户名是通过LDAP协议到达服务器的,所以loginauthentication来自LDAP 我的问题是:有可能阻止用户在本地机器上login,而用户名称来自LDAP?

查找大多数TCP套接字的进程?

我怎样才能find目前与bash运行最多的TCP套接字的进程? 我只想输出进程名称

我应该添加别名到/ etc / profile而不是/ etc / basrhc?

我已经将它们添加到/ etc / basrhc,而且大部分时间都是这样。 但是我注意到,当我向另一个用户su时,我失去了所有的别名。 事实certificate/etc/bashrc只在terminal打开时才加载,而不是在login时加载。 而且看起来/etc/profile是在login时加载的。 那么,我真的应该把这些别名放在哪里呢?

Nginx的如何运行shell脚本通过lua模块的页面加载执行,然后服务目录列表?

所以我有一个bash脚本,我想执行/运行在url的每个“页面加载”,以便它将修改(创build符号链接)到我想要服务器然后服务的/public/html/文件夹。 问题是我想出了如何做一个或其他不是两个。 我可以用nginx root /public/html/等来显示目录,或者我可以通过使用而不是root /public/html/来运行脚本: content_by_lua("/myscript.sh")'; 但是,如果我使用lua的内容,脚本会运行并创build我在/public/html里面所需要的内容,但Nginx会显示一个空白屏幕。 我想要一个方法来让nginx在使用content_by_lua运行myscript.sh后实际显示/public/html的目录列表。 我刚刚开始使用nginx是因为这个任务,并且很难做到这一点,我search了一下,但不是一个简单的问题,短语的谷歌或这里。