Linux > 做了一个定时记录cpu/mem占用的程序

2014-10-24

客服某个服务器老是cpu100%跑慢,爬日志又爬不出问题,写了个代码记录日志

#!/bin/bash
date >> /var/log/ps.log
ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail >> /var/log/ps.log

放在/etc/cron.hourly下。

日志形式大概是

Fri Oct 24 15:01:01 CST 2014
0.0 3.9 /usr/sbin/httpd
0.0 2.8 /usr/sbin/httpd
0.0 0.1 CROND
0.0 0.1 /bin/bash
0.0 0.1 /bin/bash
0.0 0.0 awk
0.0 0.0 ps
0.0 0.0 cut
0.0 0.0 tail
0.1 4.0 /usr/libexec/mysqld

希望能够解决问题

Linux > Debian testing再一次Grub Rescue

2014-10-22

今天的电脑再一次的grub rescue了。让我极度郁闷。

具体错误是开机提示File not foud,直接进入 grub rescue.

设置争取的root和prefix和,键入linux提示:

Symbol not found 'grub_efi_secure_boot'.

有了上次的经验,解决了这个问题。

首先是下live cd,刻盘,进入grub菜单,设置合适的prefix,然后启动进系统。

然后mount查看boot分区和 efi分区挂载的目录,再键入命令:

grub-install --efi-directory=[EFI文件挂在目录] boot分区位置

重启收工。

修复的是后思考了两点。

首先这明显是在gurb安装的是后出问题了,每次升级一更新grub就会有这个问题,怎么修复。

而是我的加密是否加的太多了,是否把home文件单独作为一个加密系统比较好,有利于回复数据。

Linux > 修正2014年8月debian testing升级后无线无法使用,usb无法挂载的问题。

2014-09-02

某次升级系统后,发现网络无线链接,需要手工su后重启network-manager才能链接网络,更是连闪存都无法挂载。
在文件管理器中双击挂载,提示为'An unspecified error has occurred: Not authorized to perform operation'。
立马放狗搜索。
先是发现loginctl show-session中Active=no,和/usr/share/polkit-1/actions/的设置有冲突。
立刻把/etc/inittab中的启动等级切换为5,解决了这个问题。
但还是不能挂载。
手工挂载 udisksctl unmount -b /dev/mmcblk0p1 倒没问题。
一时没有思路。
最后,发现在使用systemctl时报错:
'Failed to get D-Bus connection: No connection to service manager.'
一番搜索后,发现是需要切换为systemd.
在安装 systemd-sysv后,问题解决。

Linux > 安装了noto sans字体,还不错。

2014-08-08

Noto sans字体是adobe和google联合推出的一个开源字体,apache协议的。

出于国情,开着百度网盘离线下载了下。

给系统安装了下,设为light,感觉不错。

给chrome也用设置了,但是无法设置使用light字体,所以全黑体的还是稍有不适。

感觉整体还是一个不错的字体,先用着再说。

Linux > GITLAB DEBIAN安装记录

2014-08-05

忙了整整一个月,终于有时间对公司的环境做个调整了。

首先从代码这块下手。

虽然bitbucket非常好用。但是考虑再三,结合现状,还是准备在公司里安装一个Git服务器。

在网上爬了一圈,基本还是gitlab的评价最高。

马上开始倒腾。

首先是服务器为了满足需求(主要是ruby版本),升级到了debian7。

万幸服务器没发生什么问题。

然后是科学上网,拉安装包回来。

用了ss,vps转存,百度离线下载三种方法。

发现居然是百度离线最快……

然后直接安装。由于对ror不熟悉,稍微走了点愿望路。

首先是需要编辑/etc/gitlab/gitlab.rb。设置端口号,是否有https证书等。

然后gitlab-ctl reconfigure下。

接着在 /opt/gitlab/embedded/service/gitlab-rails/config/initializers下,

把 smtp_settings.rb.sample 复制为 smtp_settings.rb

修改内容如下(QQ企业邮箱)

if Rails.env.production?
Gitlab::Application.config.action_mailer.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
address: "smtp.exmail.qq.com",
port: 25,
user_name: "email@jarln.net",
password: "password",
domain: "",
authentication: :plain,
enable_starttls_auto: false
}
end

同时修改gitlab发信人设置

修改 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

找到 email_from:,修改为合适的发见人。

gitlab-ctl restart下,收工。可以直接使用了。

Linux > Mysql Master-Master 双机同步热备份

2014-07-29

本来给客户镜像站点是mysql/rsync主从备份的。

结果发现不行,英文版也有表单提交。

测试环境设置为双击热备份后悲愤的发现binlog无效,position不动,后然发现是自己配置文件蛋疼了。

具体操作如下:

在my.cnf中加入

master-host = 115.29.4.234
master-connect-retry = 60
server-id = 2
#binlog-do-db =  屏蔽次行,不然不记录binlog-___-
master-user = backupuser
log-bin =
master-password = password
master-port = 3306

重启mysql后,再在phpmyadmin中的replication进行设置,包括创建同步帐号,和设置同步使用的帐号。

查看状态中Slave_IO_State为Waiting for master to send event即正常。

Linux > 开始用Btrfs部署生产环境

2014-07-24

在linux下实验了多种快照方式,包括坑爹的lvm快照。

最后发现还是btrfs的最好用,增量备份,快速回滚。

LVM的快照需要预留所有快照后新产生文件的空间,让我不知道如何形如更好。

反正放在阿里云上,也试过阿里云可以回滚磁盘信息,也不是关键应用,先看看效果吧。

Linux > 在centos下限制apache2.2下载速度

2014-04-02

“这个世界永远不缺奇葩的客户--杰林修”

某客户今天和客服抱怨网站打不开。一开服务器,好啊,在网站服务器,上传了10g的资料给代理商下载……

没办法,为了保证网站正常,只能折腾apache了。

在网上找了一堆无效的过时的信息之后,终于搞定了。

首先,安装apache的bw_mod(debian用户直接apt-get install libapache2-mod-bw)

先yum install httpd-devel,这样才有apxs命令

上sf下载最新版本的mod_bw代码:http://sourceforge.net/projects/bwmod/files/bwmod/

接压缩,安装

apxs –i –a –c mod_bw.c

安装完毕,修改apache配置文件

BandWidthModule On

ForceBandWidthModule On

#BandWidth all 602400

LargeFileLimit * 20000 200000

第三行是修改每个用户的下载限速。其实意义不大。

第四个是限制制定文件的限速,第1个参数是后缀名,*代表所有,第二个参数是kbps为单位的的尺寸大小,第三个是限速.

一开始没有搞清楚单位,搞了半天都没成功,后来仔细检查了文档才发现了问题。

好了,wget 本地文件测试ok,上阿里云后台看看出口速度,嘿嘿,诸位大侠慢慢下吧。

Linux > 修正grub2+efi+dm-crypt(luks)+lvm的grub rescue

2014-01-23

看标题我的觉得自己蛋疼……

今天工作电脑突然罢工,出现grub rescue提示,把我吓个半死。

果断刻盘,修复模式,复制数据。然后开始整系统。

在修复模式中找到自己的root系统,然后grub-install,出现诡异问题。

进入grub,set prefix后,执行insmod normal或者insmod都提示 symbol not found.

Google下来是grub和module不一致。

然后各方查询和尝试,发现grub-install需要指定--efi-directory才能正常启动grub.....

启动后,发现dm-crypt无法起效,提示无法找到lvm卷。

后来有某个老linux-image可以进入,进入后重装最新的modult,自动生成initramfs,解决(dpkg-reconfigure应该也能成功)。

支持重新工作。

等于重新学习了下grub2。

但这玩意实在是linux下最没有学习价值的东西了吧。

Linux > 备忘-centos 上 设置httpd/mysql的自动启动

2013-12-19

作为debian的忠实用户,一直对rpm系不是很熟。

在centos上安装的系统重启后不启动apache和mysql,也碰到过几次。

比如这次,有客户问我升级重启电脑后,apache没有正常自动运行。

查了下,reboot了下,找了下资料。

原来centos下在安装apache.mysql后,还需要设置自动运行。

具体命令是

chkconfig查看列表

chkconfig httpd on 设置开机自动运行

chkconfig httpd off 取消开机自动运行

备忘一下。