Articles of bash

Linux top -b只显示特定列

我想捕获顶部命令的输出在另一个程序中使用,但是我只需要一些信息,更确切地说我只需要USER,PID,CPU,COMMAND列。 我已经有了命令top -b -n 1 | sed -n '7,12p' top -b -n 1 | sed -n '7,12p'来过滤前5个结果,但是我不能再去了,因为我对sed / awk不太了解。 例如:这是我得到的 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4 root 20 0 98748 50608 4608 S 6.4 4.9 212:12.16 X 1 root 20 0 2132 128 96 S 0.0 0.0 0:07.62 […]

有些命令不通过SSH(远程服务器上的shell)

我必须在远程服务器上运行一些用户定义的命令。 所以我做了以下。 它适用于许多命令,如crontab -l , ls , date +%s等…但是,它不适用于ip addr 当我实际上ssh INSIDE那些服务器ip addr工作正常。 但是,当我使用SSH执行它没有。 这是我如何执行它。 $ sshpass -p myPassword ssh -q root@127.0.0.1 'ip addr' > $PWD/tmp $ cat $PWD/tmp 再说一遍,除了ip addr以外,这个命令对我所尝试的任何命令都有效。 对于ip addr它提供了以下输出 bash: ip: command not found 所以我想知道为什么,如果有什么问题,我正在做…. 此外,请不要build议使用rsync或任何其他非默认的Linux命令,因为我工作的环境没有它们,也没有我的安装权限。 先谢谢你

是.bashrc进入一个新的bash实例时运行两次?

我想在我的bash提示符中显示嵌套的子shell的数量。 我经常在vim编辑会话中input“:sh”来执行某些操作,然后退回到编辑器。 有时我会试图退出编辑器,忘记我没有进行任何编辑,我的terminalclosures了! 为了避免这种情况,我在我的.bashrc中添加了一些代码来保留嵌套的子shell的数量,并在提示中显示出来。 这里是代码: echo "1: SHLVL=$SHLVL" if [[ -z $SHPID ]] ; then echo "2: SHLVL=$SHLVL" SHPID=$$ let "SHLVL = ${SHLVL:0} + 1" fi echo "3: SHLVL=$SHLVL" (对于那些可能想知道的问题,testing“-z $ SHPID”确保$ SHLVL不会再次增加,如果我再次在同一个shell中运行“.bashrc”,也许testing一下。) 但是输出如下所示: lsiden@morpheus ~ (morpheus) (2) $ bash 1: SHLVL=3 2: SHLVL=3 3: SHLVL=4 lsiden@morpheus ~ (morpheus) (4) $ ps PID TTY TIME […]

带有模拟的Child_process?

我试图在我的节点脚本中创build一个虚拟的bash,在另一个用户上下文中执行命令。 var spawn = require('child_process').spawn; var terminal = spawn('bash', [], { uid: 1001 }); terminal.stdout.on('data', function (data) { console.log('stdout: ' + data); }); terminal.stderr.on('data', function (data) { console.log('stderr: ' + data); }); terminal.on('close', function (code) { console.log('child process exited with code ' + code); }); terminal.stdin.write('echo Hello $USER'); terminal.stdin.end(); 以root身份执行这个输出后, Hello root 正如你可以在我的例子中看到我已经传递了一个用户ID到产卵,但是这不影响任何东西。 我期望的输出是(假设用户名是'foobar'): Hello […]

将值保存到linux bash do循环中的一个variables

我需要定义一个全局variables以供进一步参考 这是我的代码 # .bashrc LOCAL_CONF_DIR='/var/www/vhosts/vhost/test.conf' cat ${LOCAL_CONF_DIR} | while read LINE do if [ "ServerName" == "${LINE:0:10}" ]; then s=( $LINE ) SERVER_NAME=$s[1]; fi done echo $SERVER_NAME 不适合我RHE Linux 6.0 非常感谢 ;)

使用正则expression式在bash中更改行

我需要使用linux命令行来replace一些文本: 我有一些文件: ——————- line 1 line 2,2 line 3_4 ——————- 我有一个部分的解决scheme: sed -i 's/line 1/my line 1/g' /my/file 这个工程,但是当我试图更换第2和第3行它不起作用。 我得到: ——————- line 1 my line 2,2 my line 3_4 ——————- 我需要: ——————- line 1 my line 2 my line 3 ——————- 有一个简单的方法来使用reg exp来解决这个问题吗?

可用的IP列表

我有IP列表和他们各自的主机名分配像这样: 192.168.1.1 – GW 192.168.1.2 – HOSTA 192.168.1.3 – HOSTB 192.168.1.7 – HOSTC 名单很大。 超过4000行,不同的子网。 我想通过BASH提取上面列表中可用的IP。 例如,IP: 192.168.1.4 192.168.1.5 192.168.1.6 为了实现我试图比较最后一个octect的IP数字与{1-255}列表。 如果最后一个字节的数字不在列表中,则IP可用。 任何其他的想法?

Linux Bash文件使用目录名称

我所拥有的是一些用于我公司不同build筑物的crons的脚本文件,但是我所遇到的是我不得不进入每个文件并将OAK3更改为不同的build筑物ID,以及橡木3(小写)。 这些文件都位于各自的仓库文件夹ex: Desktop/CRON/OAK3 。 我想要做的是,如果是OAK3使用OAK3 ,而使用oak3 (小写),而不是每次为仓库创build一个新数据库时都必须进入每个文件。 我是新的Linux世界,所以我不知道如果有一种方法,并没有发现任何东西在谷歌。 Example.sh /usr/bin/mysqlimport –host=localhost -u root -ppassword –local –verbose -C –delete test \ /workplace/gwwallen/ETLdump/OAK3/oak3_count_portal.txt –ignore-lines=1 希望的效果是可能的 /usr/bin/mysqlimport –host=localhost -u root -ppassword –local –verbose -C –delete test \ /workplace/gwwallen/ETLdump/$WAREHOUSE_ID/$warehouse_id_count_portal.txt –ignore-lines=1

如何使用awk修复这个stream式颜色比特币报价器?

我发现下面的命令,在Linux控制台上用awk实现了一个比特币实时转换器。 该命令使用来自irc通道#比特币市场irc.freenode.net的交易数据,并且如果比特币上升或下降,则给出绿色,黑色或红色的指示。 tail -f ~/.xchat2/scrollback/FreeNode/\#bitcoin-market.txt | awk '/mtgox.*USD/{if (last<$9) { c=32 } else if ( last>$9) { c=31 } else { c=30 }; if ($7>10) { b=";7"} else if ($7>2) { b=";4"} else { b="" }; ; printf "\033[1;" c "m%s mtgoxUSD %8s @ %-8s\033[0m\n", $5,$7,$9; last=$9 }' 不幸的是,自从原作者发布命令以来,IRC频道中的事务格式发生了变化。 在一些事务处理行上有一个额外的列“x15 x11” <amphipod> Jan08 20:18:23 bitstamp […]

只打印当前stream媒体sed的最后一行?

我试图存储当前歌曲标题,我从一个网站stream。 到现在为止,我只能打印歌曲标题,但它打印每一个… mpg123 –timeout 10 http://mp3.example.com 2>&1 | sed -rn "s/.+StreamTitle='(.+)'\;.\1/p" 现在我只想将当前输出的最后一行存储在一个文件中。 这是可能的,而不是开始新的线程?