标签: shell

mysqldump 成功后发送电子邮件

我有一个脚本,它将通过 mysqldump 备份 mysql 数据库。我想在此脚本中添加另一个选项,以便在转储成功或失败时发送自动电子邮件。

这是脚本:

#!/bin/sh
BACKUP=/data/backup/sql2/new_backup/daily
cd $BACKUP
mkdir `date '+%d-%m-%Y'`
NOW=$(date +"%d-%m-%Y")

MUSER="root"
MPASS="mypass"
MHOST="sql4"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
 FILE=$BACKUP/$NOW/mysql-$db.$NOW-$(date +"%T").sql.gz
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS --lock-all-tables $db | $GZIP -9 > $FILE
done
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

scripting shell

1
推荐指数
1
解决办法
7109
查看次数

start-stop-daemon默认将pid文件存储在哪里?

当我有一个像这样的暴发户脚本时..

exec start-stop-daemon --exec /tmp/test.sh --background --start 
Run Code Online (Sandbox Code Playgroud)

我想将pid文件保存在某个地方,然后将其用于stopor restart,对吧?

那么默认创建的pid文件在哪里呢?

ubuntu debian shell bash upstart

1
推荐指数
1
解决办法
1583
查看次数

如何用引号创建别名

我尝试使用引号创建别名,如下所示:

alias myalias='ps -ef | grep tomcat | kill -9 `awk {'print $2'}`'
Run Code Online (Sandbox Code Playgroud)

但正如你所看到的,我已经'在 awk 中了

所以我试图更换

awk {'print $2'}
Run Code Online (Sandbox Code Playgroud)

awk {"print $2"}
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个别名时,奇怪的事情发生在我身上,即控制台窗口被关闭......我怎样才能让这个别名工作

linux shell alias

1
推荐指数
1
解决办法
5754
查看次数

从监狱内关闭主机

我在 NAS4FREE 上使用 Finch-Freebsd 用 ssh 创建了一个监狱,并添加了一个本地非超级用户以通过 ssh 访问监狱。

我希望能够授予此用户有限的 shell 访问权限,专门用于关闭监狱,然后开始关闭监狱所在的服务器

我怎样才能给上述用户有限的 shell 命令权限来启动关闭命令?

到目前为止,在尝试启动一个 sh /etc/rc.shutdown

我得到以下输出

评估:无法打开 /var/run/cron.pid:权限被拒绝停止 sshd。杀死:12060:不允许操作停止lighttpd。杀死:12001:操作不允许评估:无法打开/var/db/mysql/RemandYard.pid:权限被拒绝 pututxline:权限被拒绝终止

freebsd ssh shell jail freenas

1
推荐指数
1
解决办法
925
查看次数

有没有办法记录所有 bash 显示的文本(输入和输出)?

正如标题一样,我想记录 bash 显示的所有内容,即输入和相关输出。

假设我想要所有内容的“历史”,而不仅仅是输入命令。

我希望将日志存储在不同的文件中,例如每个会话有一个文件(从 shell 的打开到其终止)。

有任何想法吗?

linux shell bash history logging

1
推荐指数
1
解决办法
223
查看次数

从bash中选择远程数据库

我是 bash/shell 脚本方面的新手,我正在尝试从 mysql 数据库中远程选择并检查记录是否存在。基于响应会做一些事情。

这是我的命令

mysql -u mysql -pMysql123 -h xxx.xxx.xxx.xxx MYDBNAME -e "select count(column) from TABLE where column=1234;"
Run Code Online (Sandbox Code Playgroud)

当我直接在终端中运行此命令时,我得到了正确的响应。所以我试图把它放在这样的脚本中

#!/bin/bash

count=mysql -u mysql -pMysql123 -h xxx.xxx.xxx.xxx MYDBNAME -e "select count(column) from TABLE where column=1234;"

if [ $count -gt 0 ]
then
     echo " greater that 0 "
else
     echo " lower than 0 "
fi
Run Code Online (Sandbox Code Playgroud)

当我执行上面的脚本时,输出是

$ ./check.sh

./check.sh: 第 3 行: -u: 命令未找到

./check.sh: 第 5 行: [: -gt: 预期的一元运算符

低于 0

感谢您对此的任何帮助。谢谢。

mysql shell bash shell-scripting

1
推荐指数
1
解决办法
2815
查看次数

如何使用systemd启动jar文件

我想在系统启动时使用systemd. 我试图通过添加上面的脚本来做到这一点。但服务没有启动。

我的启动服务

[Unit]
Description=Startup

[Service]
ExecStart=/usr/local/sbin/my-startup.sh

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我的启动.sh

cd /var/www/test.com
nohup java -jar *.jar>test.out 2>test.err &
Run Code Online (Sandbox Code Playgroud)

但是服务器启动时应用程序没有启动。

? my-startup.service - Startup
   Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2018-12-12 16:22:52 +0530; 27s ago
  Process: 650 ExecStart=/usr/local/sbin/my-startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 650 (code=exited, status=0/SUCCESS)

Dec 12 16:22:52 localhost.localdomain systemd[1]: Started Startup.
Dec 12 16:22:52 localhost.localdomain systemd[1]: Starting Startup...
Run Code Online (Sandbox Code Playgroud)

linux shell bash shell-scripting

1
推荐指数
1
解决办法
5255
查看次数

如何在 at 工作中使用符号信号?

这个关于 SO 的答案中,我举了一个例子,它应该在提交给at的作业中使用 -SIGCONT 信号。但是,我发现我用 -SIGSTOP 停止的进程并没有继续。当我将信号更改为数值时,它起作用了。

echo "kill -18 $rspid"|at now + 2 minutes
Run Code Online (Sandbox Code Playgroud)

使用数值是一个坏主意,因为它在不同的系统上可能不同。

如何使用符号信号 (-SIGCONT) 而不是数字信号 (-18) 提交此作业?

linux unix shell at signals

0
推荐指数
1
解决办法
240
查看次数

Shell脚本自动提示对一切都是肯定的

如何在 shell 脚本中运行命令自动提示 yes 提示使用,以便我可以自动化脚本?

scripting shell

0
推荐指数
1
解决办法
2602
查看次数

如何在bash下递归更改文件和文件夹的大小写

我有一些文件和文件夹都是大写的,我想将它们重命名为对应的小写字母。在 Linux 系统上用 bash 执行此操作的最佳方法是什么?

作为一个例子,我可能有:

.
|-- FOLDER0
|   |-- SUBFOLDERA
|   `-- SUBFOLDERB
`-- FOLDER1
    `-- AFILE.TXT
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

.
|-- folder0
|   |-- subfoldera
|   `-- subfolderb
`-- folder1
    `-- afile.txt
Run Code Online (Sandbox Code Playgroud)

我可能可以编写一个深度优先递归脚本来执行此操作(深度优先以确保文件和子文件夹在其父文件夹之前重命名),但我想知道是否有更好的方法。rename可能有用,但它似乎不支持递归。

linux shell bash rename mv

0
推荐指数
1
解决办法
4006
查看次数

标签 统计

shell ×10

bash ×5

linux ×5

scripting ×2

shell-scripting ×2

alias ×1

at ×1

debian ×1

freebsd ×1

freenas ×1

history ×1

jail ×1

logging ×1

mv ×1

mysql ×1

rename ×1

signals ×1

ssh ×1

ubuntu ×1

unix ×1

upstart ×1