寻觅生命中的那一片浅草......

文章属于类别 Linux

func热更新模块

我们使用的salt是可以热更新模块的,最近在看func,所以想实现一番

代码请猛击下面的地址,比较暴力的实现方法

func热更新模块

假设你增加一个文件,里面有一个ping方法

/usr/local/lib/python2.7/site-packages/func/minion/modules/mc_ping.py

则直接执行下面的命令即可,无需重启func

func “*129*” call mc_ping ping

xmlrpc over ssl

最近在看func的源码,深奥,经大师指点,看完代码要自己实现一次,搞了个比较简单的

源码见

https://github.com/johncanlam/sslxmlrpc

ssh到远程服务器执行命令并留在远程服务器

ssh -t 192.168.8.51 “cd /data/ && ls && /bin/bash -i”

-t 是强制分配终端,使tab键补全等可以用

bash -i 是指这个shell是交互的

MySQL死锁导致无法查询

客服反馈后台无法查询,原因大概知道,是因为MySQL的事务产生了死锁,以往都不知道是哪个事务锁住了,只能很粗暴地重启MySQL
最近查找到一个方法,不用重启MySQL,记录如下

登录到MySQL,来看下有哪些MySQL事务

可以看到一个时间持续了比较久的事务,现在时间是13点了,而这个事务的开始时间是2012-11-09 12:15:14,显然是不正常的,我们看这个事务对应的mysql的线程ID(trx_mysql_thread_id)是82230715,就是这个事务导致的

13:01:48pm> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
+———–+———–+———————+———————–+——————+————+———————+———–+———————+——————-+——————-+——————+———————–+—————–+——————-+————————-+———————+——————-+————————+—————————-+—————————+—————————+
| trx_id | trx_state | trx_started | trx_requested_lock_id | trx_wait_started | trx_weight | trx_mysql_thread_id | trx_query | trx_operation_state | trx_tables_in_use | trx_tables_locked | trx_lock_structs | trx_lock_memory_bytes | trx_rows_locked | trx_rows_modified | trx_concurrency_tickets | trx_isolation_level | trx_unique_checks | trx_foreign_key_checks | trx_last_foreign_key_error | trx_adaptive_hash_latched | trx_adaptive_hash_timeout |
+———–+———–+———————+———————–+——————+————+———————+———–+———————+——————-+——————-+——————+———————–+—————–+——————-+————————-+———————+——————-+————————+—————————-+—————————+—————————+
| 31868CED0 | RUNNING | 2012-11-09 12:15:14 | NULL | NULL | 2 | 82230715 | NULL | NULL | 0 | 0 | 2 | 376 | 1 | 0 | 0 | REPEATABLE READ | 1 | 1 | NULL | 0 | 10000 |
+———–+———–+———————+———————–+——————+————+———————+———–+———————+——————-+——————-+——————+———————–+—————–+——————-+————————-+———————+——————-+————————+—————————-+—————————+—————————+

我们登录到mysql把它kill掉

13:01:55pm> kill 82230715;

这样,就可以查询了

其他

查看正在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

查看等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

一些基于Web的运维系统

Web运维系统,指的是通过浏览器对服务器进行远程管理,有一些现成的工具,不过我也是最近半年才知道下面几个工具(小弟孤陋寡闻),真是酒香也怕项深啊,宣传真的非常重要。

一、noc

全称叫The NOC Project,Python写的,Web展示用的是Django这个框架,支持的设备/系统较多 ,什么Linux,路由器,交换机都可以管理,用什么方式登录Linux?ssh啦,无需客户端,用的是用户名和密码登录,不知道是否支持key登录,即使不支持,改成key登录也不难。

它提供一个基于OpenSUSE的安装好noc的VirtualBox镜像 ,大家可以下载回来试用下。

来自开源中国的介绍:http://www.oschina.net/p/noc

官方网站:http://kb.nocproject.org/display/SITE/NOC

二、ControlTier

java写的,分主控端和服务器端,安装使用方面都比较简单,基本是添加客户端,添加作业,运行作业,作业输出默认是摘要输出,可以点开来看详细输出,本人觉得这系统有一个亮点就是用tag对服务器进行分类,一个服务器可以有很多很多的tag啊。

这个就不发地址了,Google下很多介绍

三、OPMS

同样是基于Python+Django,这个系统简单点,但思路非常好,我们之前写的一个web管理系统,出现问题是,通过Web提交出去的作业,由于执行时间较长,全部都超时了,导致那系统无法使用。OPMS给了我们很大的启发,它是通过Web,提交作业到redis,然后服务器上跑一个Python守护进程,定期从redis里pop作业出来处理,输出保存在一个文件伦理,Web通过ajax读日志文件来显示作业的进度。

地址:http://bbs.python520.com/forum.php?mod=viewthread&tid=270

四、OpenWebSA

一个规划得非常完整的系统,含监控,远程管理, 操作日志等等,所使用的语言主要有Python+PHP+sh。

地址:http://bbs.osapub.com/

五、webistrano
Capistrano的Web界面,Ruby写的,服务器间通讯用的是SSH。

2025年九月
« 5月    
1234567
891011121314
15161718192021
22232425262728
2930