Articles of bash

为什么“头”挂着而没有终止?

我有一个shell脚本,必须find远程主机上的最新文件。 我有这个位: ssh -q $HOSTNAME -t ls -t -1 /path/to/somewhere/ | head -n 1 它打印第一行,然后等待并不终止。 但是,如果我删除| head -n 1 打印| head -n 1 ,然后按顺序打印所有文件,然后定期终止并将控制stream程返回到我的terminal。 所以SSH命令部分正在终止,但不是头部分。 这是怎么回事? 我怎样才能让头脑工作?

Linux服务器“黑客攻击”,试图找出它是如何完成的

可能重复: 我的服务器被黑了应急 大约一个星期前,一个机器人闯入我们的一个linux服务器,并发送了70k个垃圾邮件。 我查看了一下日志,发现了什么时候连接了机器人,哪些邮件发送给了谁,以及机器人使用了什么IP地址。 但是,我不知道他是如何发邮件的。 bash历史似乎是空的,似乎没有文件修改(我检查“查找”)。 我们希望确保没有任何隐藏的程序开始发送垃圾邮件,或者一旦我们把服务器重新联机,就开始发送垃圾邮件。 所以,我问:关于机器人如何发送电子邮件的任何想法? 难道他只是在bash中执行了一个大的命令吗? 我们应该完全重新安装在服务器上的操作系统,还是安全地保持它与“黑客”系统运行? 提前致谢

CentOS EPEL安装,与位无关的命令

我正在编写一个小的“安装脚本”,它需要CentOS上的EPEL。 命令(repo url)根据操作系统的不同而不同,我怎么把它统一成一个命令呢? 参考文献: 如何安装EPEL 我记得用uname来做这个,但是不知道如何把它和现有的命令结合起来。

perl +匹配文件中的最后一个数字并将其减1

我想在我的bash脚本中添加下面的perl命令,请指教 如何改变(减less一个)在Perl文件中的最后一个以“+”字符开头的数字? Example of original file ( before run the perl command ) more file 432423 53454 +535 343 45 +1000 请求的输出文件示例(在运行perl命令之后) more file 432423 53454 +535 343 45 +999

`less`不能显示特殊字符

我在一些手册中偶然发现了一些不好的特殊字符: 如果您的terminal是“真实的”自动保证金terminal(它不允许<80> <99>允许在不滚动屏幕的情况下更新屏幕上的最后位置)考虑使用您的terminal的一个版本<80> 99> termcap有自动页边距closures。 这将确保在任何情况下都能准确无误地更新屏幕。 现在大多数terminal具有“魔术”边界(自动边界加最后一列可用)。 这是VT100的风格types,非常适合屏幕。 如果所有的你都得到了, 我做了一些研究。 man使用$pager作为它的显示工具,在我的环境中设置的less 。 所以显然less是不能显示手册页的特殊字符。 我的terminal(putty)设置为Utf-8, $LANG=en_US.UTF-8 。 什么可能是错的?

检查一个文件是否存在,使用另一个用户(sudo -u)

我想检查一个文件是否存在[ -f /path/to/file ]使用另一个用户。 所以,我补充说: USER1 ALL=(USER2) /bin/mkdir, /usr/bin/git, /bin/echo 到sudoers文件。 问题是,当我尝试执行 USER1:~$ sudo -u USER2 [ -f /path/to/file ] && echo "1" 我得到以下内容: Sorry, user USER1 is not allowed to execute '/usr/bin/[ -f /path/to/file ]' as USER2 on localhost. 所以,这里的问题是:如何启用sudoers文件? 解 我添加了/usr/bin/test到sudoers文件,而不是这样做: USER1:~$ sudo -u USER2 [ -f /path/to/file ] && echo "1" 我实际上使用了: […]

使用-c标志交互式地执行bash代码

我正在尝试运行与bash解释器的shell片段。 使用-c标志允许我直接将命令提供到命令行而不写入文件。 这是我的使用所必需的。 工作示例: $ bash -c 'free -m' 问题是我想运行的实际shell片段中有单引号。 find / -type f -size +50M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }' 我想只是逃避报价将工作: $ bash -c 'find / -type f -size +50M -exec ls -lh {} \; | awk \'{ print $9 ": " $5 }\'' 但是这不起作用。 […]

Shell脚本来监视RAID组件的完成

如何在调用以下命令之前暂停执行我的shell脚本,直到raid数组被组装完毕? 据我所知,这是一个asynchronous的进程,RAIDarrays的状态需要被轮询。 mdadm –create -l10 -n4 / dev / md0 / dev / xvdh *

Bash – 程序直接写入terminal

Linux上的源引擎(srcds_run)的Valve专用服务器直接写入terminal,而不是stdout。 我想在Debian 6上把它作为/etc/init.d守护进程来运行,我想将输出redirect/捕获到一个文件中。 我怎样才能做到这一点? 更好的是,为什么他们直接输出到terminal,这样做有什么好处? 我想我可以为srcds_run启动另一个bash实例,但这似乎是一个肮脏的解决scheme,我仍然不知道如何redirect输出。

通过sftp获取大文件的进度

我想通过sftp get大文件。 我执行以下命令: kopparberg:dev marek$ sftp -P 678 marek@server marek@server's password: Connected to server. sftp> cd backup sftp> get database.gz /Volumes/www/backup/ Fetching /backup/database.gz to /Volumes/www/backup/database.gz 9% 44MB 1.4MB/s 05:06 ETA 因为它遵循一些更多的命令,所以我决定编写一个bash脚本,并将sftp命令放在batch file中。 Bash文件如下所示: #!/bin/bash #get backup file sftp -P 678 -o "BatchMode no" -b batchfile.sftp marek@server #following commands #… 在bacthfile.sftp中只有三个步骤: cd backup get database.gz /Volumes/www/backup/ […]