我正在运行夜间bash脚本来同步远程文件夹(源)与本地文件夹(目标)。 我已经testing了基于rsync的这个脚本,并且它在一个root shell中工作正常。 需要一段时间,因为有一百个演出复制,但它的作品。 一旦我在crontab中使用它,我的服务器耗尽内存。 我的服务器有8GB的内存,4GB的交换空间,正如我所说的,当从一个shell手动运行脚本时,脚本永远不会运行OOM。 这是默认的Centos 5.5安装。 我可以拆分负载并同步所有第二级目录中的查找/脚本,但我想保持简单,只能同步顶级目录。 我不能做太多的testing,因为这个服务器是用来托pipe网站和其他服务,我不能把它挂在testing的目的。 你知道一个可以让cron正常完成这个工作的设置吗? #!/bin/bash BACKUP_PATH="/root/scripts/backup" rsync -av –delete /net/hostname/source/ /export/target/ > $BACKUP_PATH/backup_results_ok 2> $BACKUP_PATH/backup_results_error 编辑:cron的configuration是默认的,如/etc/security/limits.conf,全部注释掉了。
我试图通过在Mac OS X上使用login/注销挂钩脚本来自动挂载一个EncFS卷。这些脚本以root用户身份运行,并在用户login或注销时自动运行用户定义的挂钩。 主脚本位于/usr/local/sbin ,被称为loginhook和logouthook 。 这是login脚本: #!/bin/bash LOCAL_HOOK="/Users/$1/.loginhook" if [ -e "$LOCAL_HOOK" ] then su – $1 -c "bash $LOCAL_HOOK" fi 该脚本注册后执行login: sudo defaults write com.apple.loginwindow LoginHook /usr/local/sbin/loginhook 用户定义的.loginhook : ENCFS=/path/to/encfs PWD=$(security find-generic-password -ga EncFS 2>&1 >/dev/null | cut -d'"' -f2) echo $PWD | $ENCFS -S $HOME/.encrypted/Vault $HOME/Documents/Vault security命令的redirect是必要的,因为正常的输出到标准输出,但密码到标准错误,看起来像password: "mypass" 。 如果我从我的用户帐户执行.localhook脚本工作正常,但是如果脚本从“父”脚本(作为根运行)通过使用su我得到一个空白的密码。 使用bash -xdebugging表明,所有东西都按照它应该运行,但env命令显示,尽pipe在脚本中使用su […]
我是Bash的新手,我使用MinGW作为GCC编译器。 我有.profile在我的主目录设置build筑环境。 这里是.profile内容。 注释/未注释的行有什么不同? 为什么GCC不能处理未注释的行? export LDFLAGS=-L/home/Toktik/lib export CFLAGS=-I/home/Toktik/include # export LDFLAGS=$LDFLAGS:/home/Toktik/lib/ # export CFLAGS=$CFLAGS:" -I/home/Toktik/include/"
一年前,我尝试了几个不同的电子邮件发件人,因为我想简化从命令行发送电子邮件。 有几个工具,我试过了(我不记得了): sendmail mail xmail ssmtp uuencode 我使用mail在networking上find了一些处理附件的MIME脚本。 echo body text | mutt -s subject -a /etc/resolv.conf [other files] — [email protected] 附加文件的问题很困难,因为 编码问题 MIMEtypes的二进制文件 附加多个文件失败(它们之间没有明确的界限) 发送文本文件作为附件,而不是在电子邮件正文 但最终它与mutt (使用上面的命令)一起工作。 我本来希望没有调用一个大程序的方法,但是我很好。 在某个时候,我停止使用它,因为我总是不得不手动input电子邮件地址,我从来不记得它们。 为了进一步方便命令行发送, 有没有简单的方法来启用电子邮件地址的标签填写? 我想有一些手动的工作,因为我没有在网上find任何东西。 build立电子邮件索引(从Gmail导出的CVS)似乎很容易,但如果John Jerry使用[email protected]作为他的电子邮件地址呢? 这将是必要的完成 Jo <tab> Je <tab> 前 <tab>和 jj <tab> 。 这必须以某种方式喂入readline工具 – 我不知道这是否困难,但是我正在寻找一个简单的方法,如果有的话!
当我通过SSH重新启动服务器时,会话只是挂起,而不是很好地注销,这样我就可以继续使用当前的terminal。 我尝试了以下来解决这个问题: https : //bbs.archlinux.org/viewtopic.php? id = 50089但是,我的bash历史没有保存之前重新启动。 有没有一种方法可以在重启/暂停命令之前很好地注销所有用户(以便保存他们的bash历史logging)? 即重新启动/暂停之前保存bash历史logging和最终用户会话? 操作系统:Ubuntu服务器11.04
我正在试图写一个bash函数如下所示。 我想scp我的.bashrc到目标机器。 我想通过以下两种方式来修改以下function。 我只想input一次密码。 我可以caching为scpinput的密码,并使用相同的ssh。 我也想从服务器而不是从我的机器执行bash –rcfile 。 我的起始示例代码如下: export_bashrc() { scp ~/.bashrc $1:/root/ws_karthik ssh $1 bash –rcfile /root/ws_karthik/.bashrc } 任何人都可以build议如何解决这个问题?
我正在使用对话框–checklist创build一个菜单来为多个用户添加或覆盖ssh密钥。 菜单是这样的 0) append 1) user1 2) root 我想要发生的是,如果select零选项,并select选项1或2或两者都将被附加,而不是重写ssh密钥时重新生成。 我是新来的对话,似乎无法拿出导致这种情况发生的逻辑。 我的第一个想法是使用–separate-output选项,并以某种方式使用grep的结果,但必须有一个更优雅的解决scheme。 任何帮助或build议表示赞赏。
我想在一个实例被告知closures时运行一个PHP脚本,但是当它实际上完成closures之前。 我特别的脚本只是将一些日志文件从本地分区推送到另一台服务器。 我有这个过程如何工作的要点,但我需要一些澄清。 我怎么理解 如果我错了,请纠正我。 在/etc/init.d中创build一个可执行脚本(让我们把它叫做/etc/init.d/push-logs) 从/etc/rc0.d(shutdown)和/etc/rc6.d(重新启动)创build一个到/etc/init.d/push-logs的符号链接。 这个名字应该是KXXpush-logs 这是我的问题: 当然 – 我理解正确吗? 对于上面的#2,听起来像XX越低越好 – 是否可以使用的数字太低? 如果它与另一个脚本共享一个数字,这有什么关系吗? /etc/init.d/push-logs中的脚本是否遵循标准的init.d模板(支持start / stop等命令)? 这并不适用于我的用例。 如果可能的话,我只想要脚本如下: #!/bin/sh # # Run PHP file prior to shutdown # /usr/bin/php /path/to/php_file.php
我有一个脚本,并使用下面的命令: screen -dmS name bash -c "ls -1 > out" 我想要实现的是创build一个屏幕会话,运行一个命令,并从中分离。 上面的命令工作正常,除了正在被终止的屏幕会话: screen -list No Sockets found in /var/run/screen/S-root. 为什么即使使用-dm参数,会话也不会保存?
我怎样才能完成STDOUT是login一个文件(追加),但保留stream(离开STDOUT STDOUT)? STDOUT应该透明地工作,但是也应该被logging到一个文件中,而不会混淆每个命令input上的“tee”。 同样为STDERR。 简单地说,将输出镜像到文件。