我有一个脚本,它将通过 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)
我怎样才能做到这一点?
当我有一个像这样的暴发户脚本时..
exec start-stop-daemon --exec /tmp/test.sh --background --start
Run Code Online (Sandbox Code Playgroud)
我想将pid文件保存在某个地方,然后将其用于stopor restart,对吧?
那么默认创建的pid文件在哪里呢?
我尝试使用引号创建别名,如下所示:
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)
但是当我运行这个别名时,奇怪的事情发生在我身上,即控制台窗口被关闭......我怎样才能让这个别名工作
我在 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:权限被拒绝终止
正如标题一样,我想记录 bash 显示的所有内容,即输入和相关输出。
假设我想要所有内容的“历史”,而不仅仅是输入命令。
我希望将日志存储在不同的文件中,例如每个会话有一个文件(从 shell 的打开到其终止)。
有任何想法吗?
我是 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
感谢您对此的任何帮助。谢谢。
我想在系统启动时使用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) 在这个关于 SO 的答案中,我举了一个例子,它应该在提交给at的作业中使用 -SIGCONT 信号。但是,我发现我用 -SIGSTOP 停止的进程并没有继续。当我将信号更改为数值时,它起作用了。
echo "kill -18 $rspid"|at now + 2 minutes
Run Code Online (Sandbox Code Playgroud)
使用数值是一个坏主意,因为它在不同的系统上可能不同。
如何使用符号信号 (-SIGCONT) 而不是数字信号 (-18) 提交此作业?
我有一些文件和文件夹都是大写的,我想将它们重命名为对应的小写字母。在 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可能有用,但它似乎不支持递归。