Linux系统管理之技巧

【引自年年歳歲的博客】项目完成了一个阶段性的任务,在这里小结一下几个小技巧:

1. 授权研发人员权限越级(sudo)


  1. $ cat public 
  2. User_Alias A4 = public 
  3. A4       ALL=(ALL)       NOPASSWD: /usr/bin/vim,/bin/cat,/usr/bin/tail  #这里你自己定义 
  4. $ ansible all -m copy -a 'src=public dest=/etc/sudoers.d' -s  

2. 批量memcached清除缓存(flush_all)


  1. echo 'flush_all' | nc -z -w 1 $IP $PORT 

如果有很多,可以向下罗列,批量清除,如果你觉得很low,可以使用数组declare -a,或者循环while,

写python当然也行,附上自己的过程,请参考:


  1. $ cat clear_memcached.py  
  2. from pymemcache.client.base import Client 
  3. import sys 
  4.   
  5. def read_log(path): 
  6.     with open(path) as f: 
  7.         yield from f 
  8.   
  9. def HP(path): 
  10.     for line in read_log(path): 
  11.         ret = line.strip().split() 
  12.         ret[1] = int(ret[1]) 
  13.         ret = tuple(ret) 
  14.         print(ret) 
  15.         yield ret 
  16.           
  17. def clear_mem(path): 
  18.     for hp in HP(path): 
  19.         c.flush_all() 
  20.         c.close() 
  21.   
  22. if __name__ == "__main__": 
  23.     clear_mem(sys.argv[1]) 
  24.    
  25. $ cat mall_mem.txt  
  26. $IP1 $PORT1 
  27. $IP1 $PORT2 
  28. ...  

3. 远程快速校验多台主机不同目录下的文件内容一致性(扩容时发挥作用很大)


  1. $ ssh -t $ip 'find $dir1 $dir2 ... -type f -exec md5sum {} \;' > $ip.md5 # 注意$dir1..等使用绝对路径 
  2. $ doc2unix $ip.md5  #(这个很隐秘,多了windows的回车符) 
  3. $ ssh -tt $ip.other 'md5sum -c --quiet' < $ip.md5  
  4. # 如果一致,什么也不反回;不一致的会告诉NOT MATCH的文件  

哎,非逼自己用python去写,实现了find + sha256sum,但想将其保存到特定文件中,这一点却没实现。这一版,只是想回顾“装饰器”,这里没起到作用。


  1. #!/usr/bin/env python 
  2.   
  3. import os, os.path, sys 
  4. import hashlib 
  5. from functools import wraps 
  6.   
  7. def search(fn): 
  8.     @wraps(fn) 
  9.     def wrap(*args, **kwargs): 
  10.         paths = list(args) 
  11.         ret = fn(*args, **kwargs) 
  12.         #paths.pop() 
  13.         for path in paths: 
  14.             print(path) 
  15.             for pathname in os.listdir(path): 
  16.                 pathname = os.path.join(path, pathname) 
  17.                 if os.path.isfile(pathname): 
  18.                     with open(pathname, 'rb') as f: 
  19.                         m = hashlib.sha256(f.read()) 
  20.                         # hashfile = path + '.sha256' 
  21.                         # print(hashfile) 
  22.                         # with open(hashfile, 'a+') as f: 
  23.                         #     f.write('{}  {}\n'.format(m.hexdigest(), pathname)) 
  24.                         print('%s  %s' % (m.hexdigest(), pathname)) 
  25.                         #ret.write('aaa') 
  26.                         #ret.write('%s  %s' % (m.hexdigest(), pathname)) 
  27.                         #ret.close() 
  28.                 if os.path.isdir(pathname): 
  29.                     wrap(pathname) 
  30.     return wrap 
  31.   
  32. @search 
  33. def write(*args, **kwargs): 
  34.     pass 
  35.     #hashfile = list(args).pop() 
  36.     #print(hashfile) 
  37.     #hashfile = '10.255.201.10' 
  38.     #f = open(hashfile, 'a+') 
  39.     #return f 
  40.   
  41. if __name__ == '__main__': 
  42.     write(*sys.argv[1:])  

4. 配置Open-falcon HostGroups时,根据hostname绑定template,快速获取平台的主机名


  1. $ ansible $group1 -m setup -a 'filter=ansible_hostname' -o | awk -F'[ :|"{}]' '{print $17}' 

5. 关闭远程Nginx\Tomcat进程,启动服务就不写了


  1. $ cat marketapi_stop.sh  
  2. #!/bin/bash 
  3. kill -QUIT $(cat /home/aspire/config/nginx/nginx.pid) 
  4. $ ansible $group1 -m script -a 'marketapi_stop.sh' -s 
  5. ------- 
  6. $ cat tomcat_stop.sh  
  7. #!/bin/bash 
  8. kill -9 $(ps aux | awk '/tomat808[0]\/conf/{print $2}') 
  9. $ ansible $group1 -m script -a 'tomcat_stop.sh' -s  

6. 远程tail -f 查看日志滚动


  1. $ ssh -t $IP 'tail -f xxxx.log' 

作者:年年歳歲

来源:51CTO

时间: 2024-09-28 23:39:12

Linux系统管理之技巧的相关文章

《UNIX/Linux 系统管理技术手册(第四版)》——2.2 bash脚本编程

2.2 bash脚本编程 UNIX/Linux 系统管理技术手册(第四版) bash特别适合编写简单的脚本,用来自动执行那些以往在命令行输入的操作.在命令行用的技巧也能用在bash的脚本里,反之亦然,这让用户在bash上投入的学习时间获得了最大的回报.不过,一旦bash脚本超过了100行,或者需要的特性bash没有,那么就要换到Perl或者Python上了. bash脚本的注释以一个井号(#)开头,并且注释一直延续到行尾.和命令行中一样,可以把逻辑上的一行分成多个物理上的多行来写,每行末尾用反斜

《UNIX/Linux 系统管理技术手册(第四版)》——1.12 查找和安装软件的途径

1.12 查找和安装软件的途径 UNIX/Linux 系统管理技术手册(第四版) 第12章详细讲述了软件方面的知识.但是对于没有耐性的读者来说,这一节是个初级速成教材,教给读者怎样知道自己系统上已经安装好的软件有哪些,以及怎样获得和安装新软件. 现代操作系统把自己分成多个软件包,软件包可以逐个独立安装.默认安装的只包括一定范围的起步软件包,用户可以根据需要再扩充. 附加软件常常也以预先编译好的软件包形式提供,这是一种主流的方式,各个系统间的区别仅仅在于程度的不同.大多数软件都是由独立的小组开发,

老司机浅谈linux系统学习技巧

Linux 起源于 20 世纪 70 年代,是一种优秀的操作系统系统.初次接触到 linux 这个系统是在大学期间,这样才发现除了 windows 外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它独有的魅力所吸引.即使它的可视化窗口操作模式并不如 Windows 操作系统那样完美,可是它的可维护性.操作系统低占用率.可扩展性却让它在服务器操作系统方面已经成为资深服务器工程师的首选的操作工具. 笔者刚开始学习 linux 的时候,也不是一帆风顺的,下面笔者就开始分享这两年多的

Linux Shell常用技巧(目录)

以上关于shell的总结,全部转载至下面的博客..Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev/null和/dev/tty二. 简单的命令跟踪三. 正则表达式基本语法描述四. 使用cut命令选定字段五. 计算行数.字数以及字符数六. 提取开头或结尾数行 Linux Shell常用技巧(二) http://www.cnblogs.com/ste

《UNIX/Linux 系统管理技术手册(第四版)》——第2章 脚本和shell 2.1 shell的基础知识

第2章 脚本和shell 好的系统管理员都要写脚本.脚本以标准和自动的方式履行系统管理员的繁杂事务,藉此把管理员的时间节省出来,以花在更重要和更有意思的任务上.从某种意义上讲,脚本也是一种低质量的文档,因为它们充当了一种权威提纲,提纲里列出完成特殊任务所需的步骤. 从复杂性来看,系统管理脚本的范围很广,小到一个脚本,简单得只封装几条静态命令,大到一个重要的软件项目,为整个站点管理主机配置和管理性数据.在本书里,我们所感兴趣的主要是系统管理员通常会碰到的较小的日常脚本项目.因此,对于较大项目才需要

《UNIX/Linux 系统管理技术手册(第四版)》——2.7 推荐读物

2.7 推荐读物 UNIX/Linux 系统管理技术手册(第四版) BROOKS, FREDERICK P., JR. The Mythical Man-Month: Essays on Software Engineer- ing. Reading, MA: Addison-Wesley, 1995. Shell基础知识和bash脚本编程 ALBING, CARL, JP VOSSEN, AND CAMERON NEWHAM.Bash Cookbook. Sebastopol, CA: O'R

《UNIX/Linux 系统管理技术手册(第四版)》——1.2 读者的知识背景

1.2 读者的知识背景 UNIX/Linux 系统管理技术手册(第四版) 本书假定读者已经具备一定程度的Linux或者UNIX经验.尤其要从用户的角度对系统的风格有个一般性的概念,因为我们不再复述这方面的材料.有一些优秀的书籍可以帮助读者迅速掌握这些概念,参见本章1.14节. 即便在现今有三维图形显示功能的桌面计算机上,用于UNIX和Linux系统管理的GUI工具与其下层丰富的软件相比,依然显得相当简单.在现实世界里,我们仍然要通过编辑配置文件和编写脚本来完成管理工作,因此读者需要习惯于使用某种

《UNIX/Linux 系统管理技术手册(第四版)》——2.6 脚本编程的最佳实践

2.6 脚本编程的最佳实践 UNIX/Linux 系统管理技术手册(第四版) 虽然本章里的代码片段几乎不带注释,而且很少打印用法说明,只是因为我们已经列出了每个例子的大纲,从而体现出若干关键点.实际的脚本应该有更好的表现.有几本书通篇就讲编码的最佳实践,不过其中的基本指导原则如下. 如果运行脚本时带了不合适的参数,脚本应该打印一则用法说明,然后再退出.更好的做法是,也以这样的方式实现--help选项. 验证输入的有效性,并检查获得的输入值.例如,在对算出来的一个路径执行rm -fr操作之前,可能

《UNIX/Linux 系统管理技术手册(第四版)》——2.4 Perl编程

2.4 Perl编程 UNIX/Linux 系统管理技术手册(第四版) Larry Wall发明了Perl语言,它第一种真正伟大的脚本编程语言.它的能耐要比bash大得多,而且编写良好的Perl代码也相当容易阅读.另一方面,Perl没有给开发人员强加太多的风格规范,所以不考虑可读性的Perl代码显得很神秘.Perl也被诟病为只适合写(不适合读)的语言. 我们在这里介绍Perl 5,这个版本成为标准已经有10年了.Perl 6是一个仍处在开发之中的主要版本.参考perl6.org了解详情. 对于系