当我输入bashlinux cli 时,它给了我bash-3.2$它有什么作用?
由于某种原因,我的 cronjob 无法正常工作:
4 20 * * * /home/ubuntu/db_backup/myScript.sh 1 > /home/ubuntu/db_backup/cron_log.txt
Run Code Online (Sandbox Code Playgroud)
我的 bash 脚本如下所示:
#! /bin/bash
mysqldump -h anotherhost -P 3306 -u usen -pmypass --all-databases > $1.sql
java -jar myJar.jar param1 $1.sql
Run Code Online (Sandbox Code Playgroud)
所以 jar 文件接受 2 个参数,第一个我希望始终相同,第二个来自第一个 bash 参数。在 /var/spool/mail/ubuntu 我看到这个错误:
无法访问 jarfile myJar.jar
我在用户下设置了 crontab:ubuntu
jar 文件的所有者和组是 ubuntu,它的八进制权限为 700。
我究竟做错了什么?
我有一个可以使用 ssh 和 plesk 访问的 linux 专用服务器。我的服务器上没有足够的空间来压缩我的所有文件夹和文件,然后将它们 scp 到我的本地计算机上。
是否有 bash 命令可以直接在我的本地驱动器上压缩远程文件?
我正在尝试使用“for”循环列出所有隐藏目录:
for i in ``ls -a | grep '^\.'` `;
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
问题是循环将一些目录名称一分为二。
例如:ls -a | grep '^\.'给我
.
..
.Deleted Items
.Drafts
.Junk
.Junk E-mail
.Sent
.Sent Items
.Trash
Run Code Online (Sandbox Code Playgroud)
但我的循环给了我:
.
..
.Deleted
Items
.Drafts
.Junk
.Junk
E-mail
.Sent
.Sent
Items
.Trash
Run Code Online (Sandbox Code Playgroud)
如何改进我的脚本,使其不划分目录名称?
我有一个 bash 脚本,它通过 CRON 运行很多命令/工具,比如 convert 或 pdftk。
例如 pdftk 变得“陈旧”或“挂起”并且调用脚本停止继续进行的情况经常发生。
bash 脚本中是否有一种简单的方法(通过陷阱?)来设置执行时间限制或检测特定调用的不活动状态(根据任何定义)?
我正在对 S3 进行每日备份。我只想在晚上 8 点到早上 8 点之间消耗上传带宽。任何个人运行都可能需要超过 12 小时,因为我们的上传很糟糕。我不担心随意杀死 s3cmd 因为它会在下次运行时正确恢复。
我的 crontab 看起来像这样:
# 0 20 * * * s3cmd sync FOO s3://MyBucket
Run Code Online (Sandbox Code Playgroud)
如果是上午 8 点,我如何测试并使其停止。理想情况下,我希望我可以做这样的事情:
# 0 20 * * * time --limit 12H "s3cmd sync FOO s3://MyBucket"
Run Code Online (Sandbox Code Playgroud)
我正在使用 Ubuntu 服务器。
谢谢!
编辑:
基于量子的回答。对于多个上传命令,我认为我应该怎么做?
# 0 20 * * * s3cmd sync FOO s3://MyBucket; s3cmd sync BAR s3://MyBucket; s3cmd sync FOOBAR s3://MyBucket;
# 0 8 * * * pkill s3cmd; sleep 1; pkill s3cmd; sleep 1; pkill s3cmd; …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 bash 脚本,我想回显一个字符串,但没有自动添加到末尾的换行符。阅读手册页,它说标志是-n.
问题是,当我这样做时:
echo -n "My string is here"
Run Code Online (Sandbox Code Playgroud)
bash 脚本中的输出是:
-n My string is here
Run Code Online (Sandbox Code Playgroud)
知道为什么-n输出标志而不是处理标志。
我只是第一次进入 bash。
我将如何在此范围内的服务器上运行函数?drush 状态也仅适用于通过 ssh 连接的服务器。
#!/bin/bash
function test {
drush status
}
function connect {
ssh user@serveraddress 'test'
}
connect
Run Code Online (Sandbox Code Playgroud)
我知道您需要将远程代码放在 ssh user@server 'code here' 中,但是复杂的事情会与所有 '" 等混淆。例如,这应该回显服务器的所有 db 名称。
function connect {
ssh user@serveraddress
'
dbuser=user
dbpass=pass
DBS=`mysql -u$dbuser -p$dbpass -Bse 'show databases'| egrep -v 'information_sch$
for db in $DBS; do
echo "DB name - $db"
done
'
}
connect
Run Code Online (Sandbox Code Playgroud)
任何帮助链接表示赞赏,干杯
在 linux/bash 上,我想将命令的 stdout 附加到文件,但不重定向它(即我希望它同时转到控制台和文件)。有什么线索吗?
我使用创建了一个 tarball tar zcf arhive.tar.gz dir/,这可以正常工作。现在我想把它分成两个简单的档案,一个只用于图像,另一个 - 用于其他所有内容。
似乎没有一种简单而干净的方法可以做到这一点。因为tar我只能排除文件,排除除 gif、jpg 和 png 之外的所有扩展名是不合理的。
要包含我必须使用find-exec或| xargs. 这有点工作,但如果文件名有空格或特殊字符(撇号,引号),则会中断。所以现在我必须将所有文件名输入管道,awk然后手动转义它们?
我错过了什么?为什么这么复杂?
我只是想 tar zcf archive-images.tar.gz dir/ --match-only=*.png