嗨我有一个脚本来分区一些mysql数据库.我们正在从5.5升级到5.6.在测试脚本时,我注意到使用新的5.6版本mysql返回Warning: Using a password on the command line interface can be insecure.什么是解决此问题的最佳方法?我阅读了一个解决方法,2>/dev/null但如果它们发生,我将无法获得退出代码或任何错误.有没有其他方法可以做到这一点.这是有问题的代码行:
MYSQL_RESULT=`echo "SET sql_log_bin=0;SET @pdb='$DB',@ptable='$table';CALL maintenance(@pdb,@ptable);SET sql_log_bin=1;"|mysql -uUSER -pPASSWORD database`
Run Code Online (Sandbox Code Playgroud) 我正在研究一个将查询mysql的bash脚本.我想添加一些错误检查.假设由于某种原因导致以下查询失败,我想捕获退出错误并退出脚本.例如,这是我脚本的一部分.
QUERY="SELECT DISTINCT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`TABLES`
WHERE table_schema NOT IN ( 'mysql', 'information_schema', 'performance_schema' )"
mysql -u user -pPASSWD --batch -N -e "$QUERY" | while read DATABASE TABLE;
do
...
...
...
done
Run Code Online (Sandbox Code Playgroud)
在脚本运行"$ QUERY"后,我怎么能捕获退出代码.我在想这样的事情.但它似乎没有用.
mysql -u user -pPASSWD --batch -N -e "$QUERY" echo $? | while read DATABASE TABLE;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗
我正在审查其他人在工作中编写的一些bash脚本,我发现这条线我正在努力理解
[[ $(awk 'BEGIN{print ('$CAPACITY'>=0.9)}') -eq 1 ]] && echo "Capacity at 90 Percent"
Run Code Online (Sandbox Code Playgroud)
我的理解是这一行正在取代if语句.有人可以帮我解释一下这条线的真正作用.谢谢
请帮忙.这样做我收到错误.我怎么修理
if [ awk 'BEGIN{print 0.4*10}' > 1 -eq 1 ]; then echo YES; fi
Run Code Online (Sandbox Code Playgroud) 我需要创建一个bash脚本,它将发送一封包含在特定目录中的文件的电子邮件.该脚本将获取目录位置.(即./script.sh /backups/daily).
脚本执行后,将发送一封包含其中列表文件的电子邮件/backups/daily.该电子邮件还将包括每个文件的大小(以GB为单位)以及创建文件的日期.
我是linux的新手.有人能指出我正确的方向吗?
请帮忙.怎么能做到这一点
if [ echo `awk 'BEGIN{print 0.001>0.9}'` -eq 0 ]; then DO SOMETHING; fi
Run Code Online (Sandbox Code Playgroud)
但这是错误的.
我要做的是:如果第一个数字(0.001)如果大于0.9,那么DO SOMETHING.否则没有
数字将始终浮动,如0.001,0.03,0.89等......
啊,我不能使用bc命令.
我正在尝试缩短查询此表所需的时间.这是我们的生产表之一,因此我们无法对其进行任何更改.我在bash脚本上使用以下查询
SELECT min(date_time) FROM db.event
Run Code Online (Sandbox Code Playgroud)
但是,这需要大约20分钟.我们在这些分区上有很多数据 - 大约100GB.bash脚本需要收集此表中最旧的记录.有没有更好的方法让它在10分钟或更短的时间内更有效率?
*************************** 1. row ***************************
Table: event
Create Table: CREATE TABLE `event` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(100) NOT NULL,
`application` varchar(100) NOT NULL,
`cdr_id` varchar(100) NOT NULL,
`date_time` datetime NOT NULL,
PRIMARY KEY (`id`,`date_time`),
KEY `ix_cdr` (`cdr_id`),
KEY `ix_type_app_cdr` (`type`,`application`,`cdr_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2985903027 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (to_days(date_time))
(PARTITION p735660 VALUES IN (735060) ENGINE = InnoDB,
...
... many partitions here
...
...
PARTITION p735660 VALUES IN …Run Code Online (Sandbox Code Playgroud) 我正在使用bash脚本来备份MySQL.我需要从文件中读取一系列字符串并将它们传递给我脚本中的变量.例:
这样的东西将在文件中(file.txt)
database1 table1
database1 table4
database2
database3 table2
Run Code Online (Sandbox Code Playgroud)
我的脚本需要读取文件并将这些字符串放在一个变量中:
#! bin/bash
LIST="database1.table1|database1.table4|database2|database3.table2"
Run Code Online (Sandbox Code Playgroud)
编辑.我改变了主意,现在我需要这个输出:
database1.table1.*|database1.table4.*|database2*.*|database3.table2.*
Run Code Online (Sandbox Code Playgroud)