Articles of bash

用于mysqldump的CentOS root用户crontab

我正在使用CentOS 6.6。 我正在尝试设置一个crontab。 我做了一个手动执行的.sh脚本。 命令如下: mysqldump –skip-lock-tables –single-transaction –hex-blob –flush-logs –master-data=2 -u root -p'password' database1 > database2.sql 但是,当我尝试在/ etc / crontab文件中设置它时,它不会运行。 这里是crontab文件的内容。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .—————- minute (0 – 59) # | .————- hour (0 – 23) # | | .———- […]

发现文件编码的差异

我正在使用msmtp从cmd发送电子邮件 cat > test1 << EOF >From: "Tester" >test >EOF cat test1 | msmtp [email protected] 这工作时: echo -e 'From: "Tester"\ntest' > test2 cat test2 | msmtp [email protected] 虽然不起作用 diff test1 test2 什么也没有返回 file -bi test1 test2 返回了相同的结果 message/rfc822; charset=us-ascii

如何处理脚本中的密码:内存中的VS文件

我有一个脚本,运行在一个便宜的云提供商的VPS。 情况是:我相信我的提供者,但是如果他想窃取我的密钥,我宁愿让自己的一生辛苦。 硬盘中所有感兴趣的文件夹都是经过encryption的(truecrypt或类似的),只有当机器启动时才清除(每次都是,但是如果他们拿出hhd,他们将无法查看我的数据) 哪个是在脚本内部处理Dropbox API密钥的最佳解决scheme? 注意:脚本将从FTP获取文件,将它们上传到Dropbox并从磁盘上删除它们。 我正在考虑存储一个encryption的文件(openssl / pgp),当我启动脚本(使用解密密钥,手工input)时,它将解密密钥,将其存储为variables并在需要时使用它(脚本将保持活动状态永远) 任何想法/意见?

在后台运行ssh / netcat

我试图在OS X和Linux主机之间运行networking吞吐量testing。 我希望能够测量从Linux主机到OS X主机的持续吞吐量。 我想把这个包装成一个单一的脚本,这样我可以很容易地运行它,因为我对networking进行了更改。 到目前为止,我的方法是在侦听端口的OS X主机上启动netcat( nc -l -k 20000 > /dev/null )。 然后,我将在Linux主机上启动netcat,并将数据发送到OS X主机( ssh <Linux host> 'dd if=/dev/zero | nc <OS X host> 20000 2>&1' )。 之后,我将运行netstat -i 1来测量吞吐量并将其logging到文件中。 这一切都很好,当我打开3个terminal窗口,并在前台运行这些命令。 但是,当我尝试在后台运行netcat命令时,ssh进程退出。 我已经尝试使用&和-f背景的SSH进程。 以下是完整的脚本到目前为止的样子: #!/usr/bin/env bash set -o errexit nc -l -k 20000 > /dev/null & LISTEN_PID=$! ssh <linux host> 'dd if=/dev/zero | […]

SSH:如何获得在ssh之后点击标签时自动完成的服务器列表?

inputssh后,当我完成标签填写时,我得到一个我可以ssh进入的服务器列表。 我怎样才能得到一个单一的命令相同的名单? 伪命令是: ssh –list-available-servers 我无法find/usr/share/bash-completion/completions/ssh的技巧

多台服务器Rsync同时安装到一个NAS中

场景: 1台NAS(Synology Cubestation CS407) 各种实体零售商店中的20台远程服务器(每个商店1台服务器) 总部和商店之间的networking位于MPLS / VPN中。 我已经从每个商店服务器创build了无密码访问到我们的NAS。 我已经创build了一个bash脚本,用于备份特定的一组文件夹,数据从2.5到14个数据库,具体取决于商店。 bash脚本在各个存储服务器上运行,并使用Rsync将文件夹复制到NAS中 rsync -azv –delete-after –stats /u/archive/ root@nas01:/volume1/bak/$HOSTNAME/u/archive$(date +%u)/ 题: 我可以安全地在多个服务器上同时安全地执行这个脚本,每晚在ie 2AM – NAS上的Rsync可以同时处理来自多个服务器的传入数据/连接吗? 更新: 所以我昨天凌晨2点运行了备份脚本,只在最老的/最大的存储(store1)上运行备份脚本,备份了大约9.5G的数据。 这新鲜/完整的Rsync花了1小时6分钟。 我做了testing的商店昨天早些时候运行(store8)也同时备份到store1。 Store8拥有2.4G的数据,耗时29分钟。 我昨天早些时候用store8testing新鲜/完整的Rsync,花了9分钟才完成。 而立即连续3分钟的Rsync,意味着没有文件变化。 正如已经提到的那样,我打算错开/安排Rsyncs来平衡负载。 附加信息: 什么是备份: 3个目录,bash脚本运行3个Rsync命令 – 方向1:存档数据/销售数据,不更新数据,每天添加约30个文件的1个文件夹。 – 方向2:主数据目录,POS系统的设置,今天的销售数据。 – 方向3:PostgreSql数据库目录。 计划在Rsync之前运行pg_dump。 数据如何分割: – 方向1:这是增量目录,从8.3G(store1,15年)到70M(store17,3个月) – 方向2:0.5G到1G,平均90K文件和4000 dirs – 方向3:0.1G到0.4G,数据库文件,平均450个文件和13个目录 带宽: 总部:100 / 100Mbit光纤。 存储:ADSL,根据手边的铜线,在1到2 Mbit之间上传。 […]

什么是适当的什么来终止一个脚本使用start-stop-daemon?

我正在使用start-stop-daemon为我的脚本创build一个INIT脚本。 我正在使用–make-pidfile导致我的脚本不做自己的PID。 我可以启动我的脚本使用开始和PID文件生成适当的PID。 但停止function不起作用。 按照start-stop-daemon手册, – 停止检查是否存在指定的进程。 如果存在这样的进程,start-stop-daemon会发送由–signal指定的信号,然后退出,错误状态为0.如果这个进程不存在,则start-stop-daemon退出,错误状态为1(如果 – -oknodo被指定)。 如果指定了–retry,则start-stop-daemon将检查进程是否已经终止。 我没有find任何文件 – 信号本身。 就像如何指定–signal如果我想发送一个SIGTERM。 case "$1" in start|debug) log_daemon_msg "Starting $DESC: $NAME" start-stop-daemon –start –quiet –background –make-pidfile –pidfile $PIDFILE \ –exec $DAEMON || log_failure_msg " already running" log_end_msg 0 ;; stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon –oknodo –stop –quiet –pidfile $PIDFILE \ –exec $DAEMON […]

如果path中有空格,如何删除目录的内容?

find -name "lastStable" -o -name "lastSuccessful" -exec sh -c "sudo rm -rv {}/*" {} \; 从上面的命令可以看出,我正在浏览和删除lastStable和lastSuccessful目录的内容,但将这些文件夹留在后面。 然而在这个发现中,我最终可能会得到带有空格的path,例如: /促销/生产发展环境/ lastStable 我怎么让我的查找脚本来处理这些path与他们的空间以及?

从bash脚本读取cron时间表

是否有可能获得正在运行的工作的时间表? 如果我有我的crontab这个行* * * * * /home/test/test.sh 我可以从test.sh读取* * * * * ,只能读取该脚本? 我希望有一些变数,我可以阅读,并得到目前的时间表。

脚本在terminal工作,但不是.sh

我有一个脚本,在terminal完美工作,但出于某种原因不会在cron或我手动运行脚本时发射。 我不知道它是否有所作为,但它运行在Asustor NAS设备上。 这是脚本 #!/bin/bash tar cvf reachdata_$(date +'%Y_%m_%d').tar /volume1/reachdata