IT袋

当前位置:主页 > 经验教程 > 系统教程 >

linux常用的20个命令操作

linux常用的20个命令操作 关于linux入门基础教程(3)

更新:2023-09-02 21:48:08 来源:IT袋 作者:苏晓敏
导读:linux常用的20个命令操作,生成连续时间片 生成连续时间片,一般用在脚本中,比如查询一年的数据量,当数据量很大时,直接查询是出不来结果的,这时可以把1年拆成1天天的,让

linux常用的20个命令操作

生成连续时间片

生成连续时间片,一般用在脚本中,比如查询一年的数据量,当数据量很大时,直接查询是出不来结果的,这时可以把1年拆成1天天的,让查询1天天的跑。
如下,1年拆成1天天时间范围的sql,丢到mysql命令里慢慢查。

generate_day_range(){ seq $(date -d '2022-01-01' +%s) $((24*3600)) $(date -d '2022-02-01' +%s) | sed '1!{$!p}' | paste - - }query_one_day(){ begin_time=$(date -d "@$1" +'%F %T') end_time=$(date -d "@$2" +'%F %T') sql="select count(*) from order where create_time >= '${begin_time}' and create_time < '${end_time}'; "; echo "$sql" mysql -N -e "$sql"}export -f query_one_daygenerate_day_range | xargs -l -P2 bash -c 'query_one_day "$@"' -

pv显示进度与速度控制

长时间运行的脚本,看不到进度让人很着急,于是就有了pv命令。
如cp命令,本身没有显示进度功能,复制大文件干瞪眼,这时可以使用pv命令代替。

pv file1 > file2

如上节查询1年数据量的脚本,要查看执行进度,只需要在mysql命令前放入pv命令即可。

generate_day_query_sql(){ fmt='select count(*) from order where create_time >= "%s" and create_time < "%s"; \n'; seq 0 $1 \ |xargs -i date -d "2021-01-01 00:00:00 {} days" +'%F %T' \ |sed '1!{$!p}' \ |paste - - \ |awk -F'\t' -v fmt="$fmt" '{printf fmt,$1,$2}'}# -l表示计算流过pv的行数,pv默认计算流过的字节# -s指定总行数,这样每一行文本流过pv,pv就能计算出当前进度了generate_day_query_sql 365 | pv -l -s 365 | mysql -vvv

pv还能用来控制速度,这样就能避免脚本把数据库查挂了。

# -L 2表示文本流过速度不超过每秒2行generate_day_query_sql 365 | pv -l -s 365 -L 2 | mysql -vvv

对比表结构

相同系统,不同环境的数据库,保持一致表结构其实是比较困难的,当需要找出他们的不同点时,尽量不要一个个字段去对比,效率太低了。

#导出db1中所有表名echo 'show tables' | mysql --skip-column-names -D db1 > table_names.txt#导出db1与db2的表结构cat table_names.txt | sed 's/.*/show create table &;/' | tee >(mysql -D db1 > db1_tables.txt) >(mysql -D db2 > db2_tables.txt)#恢复换行符sed -i 's/\\n/\n/g' db1_tables.txt db2_tables.txt#对比表结构icdiff db1_tables.txt db2_tables.txt

总结

可以将这些工具命令添加为Linux别名,用熟练后,你会发现你根本离不开它。

上述分享的linux常用的20个命令操作、关于linux入门基础教程的具体介绍,希望大家能喜欢!

相关阅读