Articles of bash

我怎么能暂停,然后恢复呼叫`睡眠`

调用sleep(10)意味着睡眠指定的秒数。 当我input“睡眠10”时,我想等待10秒钟,但是当我在睡眠命令之后立即使用CTRL-Z(或发送SIGTSTP )时,它不会停止“定时器”(或计数器),即使进程已经停止。 我可以通过jobs看到sleep已经改变为STOPPED但是如果我等待10秒,然后将这个过程发送到前台,它将立即完成 ,即使它运行的时间less于10秒。 所以,我的问题是如何停止睡眠定时器运行? 更新 ::我现在明白,睡眠是使用挂钟时间,所以我怎么能用一个用户cpu时间来实现睡眠

shell如何处理无限循环

无论何时我需要限制shell命令输出,我使用较less的分页结果: cat file_with_long_content | less 这工作得很好,但是我很好奇,即使输出永远不会结束,仍然可以工作,请考虑在inf.sh文件中使用以下脚本: while true; do date; done 然后我跑 sh inf.sh | less 而且它仍然可以对结果进行重新分页,所以说pipe道输出结果而不是等待命令完成才能输出结果是正确的吗?

Shell脚本问题,包含空格的文件名

我知道处理文件名空间的一种方法是用单引号括起文件名:“'”。 为什么下面的代码叫做“echo.sh”,在包含带空格的文件名的目录下工作,但程序“ls.sh”不起作用,唯一的区别是'echo'被'ls'replace? echo.sh #!/bin/sh for f in * do echo "'$f'" done 生产 : 'ABC' “高清” 'echo.sh' 'ls.sh' 但是,“ls.sh”失败: #!/bin/sh for f in * do ls "'$f'" done 生产 : ls:不能访问'ab c':没有这样的文件或目录 ls:不能访问'de f':没有这样的文件或目录 ls:不能访问'echo.sh':没有这样的文件或目录 ls:不能访问'ls.sh':没有这样的文件或目录

不能创build/ dev / stdout:没有这样的设备或地址

我想通过节点运行一个shell命令并捕获stdout的结果。 我的脚本在OSX上正常工作,但不在Ubuntu上。 我已经将问题和脚本简化为以下节点脚本: var execSync = require('child_process').execSync, result = execSync('echo "hello world" >> /dev/stdout'); // Do something with result 结果是: / bin / sh:1:不能创build/ dev / stdout:没有这样的设备或地址 我试图用/dev/stdout /dev/fd/1replace/dev/stdout 我已经尝试将shell更改为bash … execSync('echo …', {shell : '/bin/bash'}) 就像我说的,上面的问题被简化了。 真正的脚本接受作为参数的结果应写入文件的名称,所以我需要通过提供对stdoutstream作为文件描述符(即/dev/stdout访问来解决此问题。 我怎样才能通过节点执行命令,同时给命令访问它自己的标准输出stream?

如何使用bash监视目录中新创build的文件?

我有一个由大量日志文件组成的日志目录,一旦系统事件发生,就会创build一个日志文件。 我想写一个总是监视文件列表并在terminal上显示新创build文件的内容的online bash脚本。 这是它的样子: 目前,我所拥有的只是显示整个目录的内容: for f in *; do cat $f; done 它缺乏我想要的监视function。 我的系统的一个局限是我没有 watch命令。 我也没有任何包pipe理器来安装花哨的工具。 原始的BSD是我所有的。 我有tail ,我正在想像tail -F $(ls)但这尾巴每个文件,而不是文件列表。 总之,我想修改我的脚本,以便我可以监视所有新创build的文件的内容。

Bash脚本命令不能在cron中工作

我有以下bash脚本来读取日志,并检查蛮力,然后阻止使用iptables IP。 #!/bin/bash #blah blah run some commands to get the IP iptables -A INPUT -s $p -j REJECT –reject-with icmp-host-prohibited echo "BANNED $p FOR $COUNT ATTEMPTS" |wall 我做了chmod 755.当我从terminal运行命令,它工作正常。 但是当我使用crontab -e作为root设置一个cronjob时,它得到IP,并且回显“BANNED …”消息到墙上,但是没有任何东西被添加到iptables列表中。 PS。 我试过#!/bin/bash和#!/bin/sh但没有运气。

使用AWK从两个文件中分解n个列

我有两个N列数的文件 文件1: A 1 2 3 ……. Na1 B 2 3 4 ……. Nb1 文件2: A 2 2 4 ……. Na2 B 1 3 4 ……. Nb2 我想要一个输出从File1的第一列值将被从File2的第一列中减去,这样直到列N如下所示: A -1 0 -1 …….. (Na1-Na2) B 1 0 0 …….. (Nb1-Nb2) 如何在Linux环境中执行AWK或Perl脚本?

如何使用awk将文件的某个字段更改为大写?

我有这样的文本文件: 1 http http 3 4 5 2 dns dns 4 3 ftp ftp 4 5 6 8 我想输出是这样的: 1 HTTP http 3 4 5 2 DNS dns 4 3 FTP ftp 4 5 6 8 我想把第二个字段从小写变成大写,只有第二个字段。 请注意,某一行中的字段数量不固定。 我可以用awk完成这个目标吗?

freeTDS bash:在Microsoft SQL Server中执行sql查询

我可以使用freeTSD和命令行通过Mint Linux VM连接到Microsoft SQL Server 2008实例,以在其上执行sql语句。 现在我想在bash脚本中自动化这个。 我能够成功login我的bash脚本: TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password 然后我有我的SQL查询: USE dbname GO delete from schema.tableA where ID > 5 GO delete from schema.tableB where ID > 5 GO delete from schema.tableC where ID > 5 GO exit 这在通过freeTSD命令行手动执行时有效,但不能在我放入bash文件时使用。 我跟着这个post: freeTSD&bash 。 这是我的bash脚本示例: echo […]

使用input/输出redirect在后台运行进程

我很想知道,当进程有input/输出redirect来在后台运行进程时,在代码中使用“&”运算符是否有所不同 在后台运行进程方面,这两行代码之间有什么区别? 如果有的话,我怎样才能确定分歧将是什么? setsid python script.py < /dev/zero &> log.txt & setsid python script.py < /dev/zero & > log.txt & setsid python script.py < /dev/zero > log.txt & setsid python script.py & < /dev/zero > log.txt