Shell toolbox

1 crontab

教你怎么写定时任务的网站,并给出了很多示例,比如

1
2
3
4
#“At every 2nd minute.”
*/2 * * * *
# At 22:00 on every day-of-week from Monday through Friday
0 22 * * 1-5

不要以为会写crontab就可以了,建议有空以下内容了解下:

最后,有兴趣可以看看 Cron Job Monitoring 的工具 cronitor,不过貌似是收费的。看介绍,可用于 Cron Job, Scheduled Event(AWS),Task Scheduler, Kubernetes Cron Job, Java Cron Job, Jenkins Job多类型的监控。

2. Preventing duplicate cron job executions

原文链接,关于 Preventing duplicate cron job executions 提到了多种方法和工具。另外,中文搜索的话 flock 命令较多,比如这个

打造高效的工作环境 – SHELL 篇

3. For 循环

参考
https://linuxize.com/post/bash-for-loop/
https://www.cyberciti.biz/faq/bash-for-loop/

1
2
3
4
for i in {1..5}
do
echo "Welcome $i times"
done

或者写在一行里 for i in {1..5};do echo "Welcome $i times";done

1
2
3
4
5
for i in $(ls ./* ); 
do
echo $i;
date;
done
1
2
3
4
for s in server1 server2 server3
do
ssh vivek@${s} "uptime"
done

Loop over array elements

1
2
3
4
5
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby')

for book in "${BOOKS[@]}"; do
echo "Book: $book"
done

参考链接:

4. xargs

先看🌰,快速 scale down k8s deployment.

1
2
3
4
5
6
7
8
9
10
11
12
13
kubectl get deploy -n <YOUR_NAMESPACE> -o name | xargs -I % kubectl scale % --replicas=0 -n <YOUR_NAMESPACE>


# 分解
kubectl get deploy -n <YOUR_NAMESPACE> -o name

# output:
deployment.extensions/backend-filebeat
deployment.extensions/daemon-filebeat
...

# 如果一条一条的执行,如下
kubectl scale deploy/daemon-filebeat --replicas=10 -n <YOUR_NAMESPACE>

实际使用的是 xargs 实现参数传递 这一方法:
ls *.log | xargs -I {} mv {} log_backup_dir/
这里的 {} 也可以用 % 代替,毕竟可以少敲一下键盘。另外可以看看 xargs与管道的区别

更多实际用法可以参考: https://blog.csdn.net/zhangmingxingwei/article/details/8996627 , 其中的git log --format="%H %P" | xargs -L 1 git diff 用法也很不错。 另外,有一个原理篇也建议看看,戳这儿

5. pssh pscp

pssh: Execute Commands on Multiple Remote Linux Servers Using Single Terminal

使用 链接1, 链接2

pscp 类似pssh,可以帮助你从一台主机上将文件发送到多台主机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
                            +--------------+
+-------->| server 1 |
| +--------------+
|
|
|
+-------------|--- +--------------+
| pssh /pscp |------------>| server 2 |
+-------------+--- +--------------+
|
|
| +--------------+
+-------->| server 3 |
+--------------+

shell系列1-来源cnblogs

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2019-2024 John Doe
  • Visitors: | Views:

请我喝杯咖啡吧~