日版Kindle Paperwhite更新固件

当您的Kindle连接至WiFi无线网络时,软件更新会自动下载并安装在Kindle设备上;您也可以手动下载最新软件,并通过USB连接线导入Kindle设备进行更新

1、下载的升级包,
下面分别是介绍URL 和下载固件的URL
https://www.amazon.cn/gp/help/customer/display.html?nodeId=201064850
http://s3.amazonaws.com/G7G_FirmwareUpdates_WebDownloads/update_kindle_5.3.8.bin

2、然后拷贝到磁盘的根目录(记得是和documents同级的目录)
evan@evan-laptop:~/kpw$ cp update_kindle_5.3.8.bin /media/Kindle/

3、拷贝完后,拔掉usb线,在原系统下点击menu选择设置
再次点击menu选择【更新你的 kindle】(变成可选),然后系统会开始升级。
3、更新固件OK,建议确认下入口: 原生系统-左上角【Menu菜单】-【设置】-【Menu菜单】-【设备信息】-【固件版本】

亚马逊上的升级方法很全。升级后之前的书和文档都不会丢,并且可以用z.cn的帐号 v5给力,不用再买国行这么贵的啦

ps:我的是日版,从一同事MM那时接手的 580 感觉还不错

Kindle Paperwhite看书时出现存储空间不足报警,这个问题在我升级固件后就不见了,哈哈

参考教程
http://kindleren.com/thread-85705-1-1.html

Kindle PaperWhite 45个小技巧
http://www.douban.com/group/topic/33931176/

Kindle Paperwhite看书时出现存储空间不足报警求解
http://s.kindleren.com/thread-87244-1-1.html

centos5.x 系列使用 salt 内置的nginx 模块

查看模块
find / -name nginx.*
cat /usr/lib/python2.6/site-packages/salt/modules/nginx.py

import salt.utils

# Cache the output of running which(‘nginx’) so this module
# doesn’t needlessly walk $PATH looking for the same binary
# for nginx over and over and over for each function herein
@salt.utils.memoize
def __detect_os():
return salt.utils.which(‘nginx’)

def __virtual__():
”’
Only load the module if nginx is installed
”’
if __detect_os():
return ‘nginx’
return False

def version():
”’
Return server version from nginx -v

CLI Example::

salt ‘*’ nginx.version 问丹爷下面的源码
”’
cmd = ‘{0} -v’.format(__detect_os())
out = __salt__[‘cmd.run’](cmd).splitlines()
ret = out[0].split(‘: ‘)
return ret[-1]

由上面打开这模块源码可以要用 salt.utils
但是导入这模块时报错 原来是python版本太老了

Python 2.4.3 (#1, Sep 3 2009, 15:37:37)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import salt.utils
Traceback (most recent call last):
File ““, line 1, in ?
ImportError: No module named salt.utils

#master 和 minion改为新版本 python就好了
vi /usr/bin/yum
mv /usr/bin/python /usr/bin/python24bak
ln -s /usr/bin/python26 /usr/bin/python

搞定

测试私有方法

>>> a = __detect_os()
>>> a
‘/usr/sbin/nginx’

解读
cmd = ‘{0} -v’.format(__detect_os()) #{0} 数组第一个
out = __salt__[‘cmd.run’](cmd).splitlines() #切成一行行
ret = out[0].split(‘: ‘) 上面的第一行
return ret[-1]

rsync+inotify 实时数据的实时备份

第一 首先是内容发布机
[root@master ~]# uname -r
2.6.18-348.el5

#有下面三项输出
[root@master ~]# ll /proc/sys/fs/inotify/
总计 0
-rw-r–r– 1 root root 0 09-26 01:58 max_queued_events
-rw-r–r– 1 root root 0 09-26 01:58 max_user_instances
-rw-r–r– 1 root root 0 09-26 01:58 max_user_watches

安装inotify-tools
https://github.com/rvoicilas/inotify-tools/wiki
wget -c http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xvf inotify-tools-3.14.tar.gz && cd inotify-tools-3.14 && ./configure --prefix=/usr && make -j2 && su -c 'make install'

#安装成功
[root@master ~]# ll /usr/bin/inotifywa*
-rwxr-xr-x 1 root root 47192 09-26 02:05 /usr/bin/inotifywait
-rwxr-xr-x 1 root root 43530 09-26 02:05 /usr/bin/inotifywatch

[root@master ~]# cat inotifyrsync.sh
#!/bin/bash
host1=192.168.1.2
host2=192.168.1.3

src=/data/wwwroot/
dst1=web1
dst2=web2
user1=web1user
user2=web2user

#/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user1@$host1::$dst1
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user2@$host2::$dst2
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

chmod 755 inotifyrsync.sh

[root@master ~]# cat /etc/server.pass
1234

chmod 600 /etc/server.pass

##运行测试,对了得先web1 web2 配置好了才测试
sh inotifyrsync.sh &

建议写到系统自启动文件 /etc/rc.local

脚本相关解释如下:
–timefmt:指定时间的输出格式。
–format:指定变化文件的详细信息。

内容发布机 到此配置完成,下面是 web机器

第二 web机器
1.
/etc/rsyncd.conf
#Web1节点rsyncd.conf配置如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web1]
path = /web1/wwwroot/
comment = web1 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.9
hosts deny = *
list = false
uid = root
gid = root
auth users = web1user
secrets file = /etc/web1.pass

cat /etc/web1.pass
evan:1234

chmod 600 /etc/web1.pass

#启动服务
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
2.
Web2节点rsyncd.conf配置如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web2]
path = /data/wwwroot/
comment = web2 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.9
hosts deny = *
list = false
uid = root
gid = root
auth users = web2user
secrets file = /etc/web2.pass

##
cat /etc/web2.pass
evan:1234

chmod 600 /etc/web2.pass
#启动服务
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf

在2台web 服务节点rsyncd.conf文件配置完成后,依次启动rsync守护进程,接着将rsync服务加入到自启动文件中:
echo “/usr/local/bin/rsync –daemon” >>/etc/rc.local
到此为止,2个web服务节点已经配置完成。多个节点也依此如此

chmod 755 /web/wwwroot/inotifyrsync.sh
/web/wwwroot/inotifyrsync.sh &

问题处理
问题1
[root@master ~]# /usr/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory

[1]+ Done bash inotifyrsync.sh

[root@master src]# find / -name libinotifytools.so.0
/usr/lib/libinotifytools.so.0
/root/inotify-tools-3.14/libinotifytools/src/.libs/libinotifytools.so.0

ln -s /usr/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

问题2
用户名写错了
@ERROR: auth failed on module web1
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
@ERROR: auth failed on module web2
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]

注意点
usr/local/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ \
-e modify,delete,create,attrib \
${src} \
上面的命令返回的值类似于:
10/03/09 15:31 /wwwpic/1
这3个返回值做为参数传给read,关于此处,有人是这样写的:
inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F;do
细化了返回值。

参考
http://ixdba.blog.51cto.com/2895551/580280

inotify-tools使用方法介绍


http://blog.csdn.net/firefoxbug/article/details/8188804
http://bbs.linuxtone.org/thread-2681-1-1.html

while read files的一个小小例子

ls /tmp 返回值做为参数传给read
[root@master ~]# cat t
ls /tmp | while read files
do
echo $files
done

[root@master ~]# ls /tmp/
rsync.log
[root@master ~]# sh t
rsync.log
[root@master ~]# sh -x t
+ ls /tmp
+ read files
+ echo rsync.log
rsync.log
+ read files

linux端口绑定

1)作用
/etc/services文件是记录网络服务名和它们对应使用的端口号及协议。
2)格式
文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。

服务名 “tab” 端口号/协议名 “tab” 别名

kermit 1649/udp
l2tp 1701/tcp l2f
l2tp 1701/udp l2f
h323gatedisc 1718/tcp
3)应用
很多的系统程序要使用这个文件。

软件自己绑定,像mysql 3306 nginx 80

如果服务想更改端口号只要更改/etc/services中的端口号就可以了,应用程序不需要做任何更改
/etc/services 文件

http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol

http://blog.csdn.net/apn172/article/details/8870364
http://zhidao.baidu.com/question/259423007.html

nginx 调优

1 nginx指令中的优化(配置文件)

1) nginx进程数,
worker_processes
建议按照cpu数目来指定,一般为它的倍数。

2)使用epoll的I/O模型
use epoll;

3)一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
worker_rlimit_nofile 102400;

4) 每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections
worker_connections

5)客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

client_header_buffer_size 4k;

6)keepalive超时时间。

7)使用gzip 缓存 css js 图片等
2 内核参数的优化

3 FastCGI参数优化

fastcgi_connect_timeout 300;
指定连接到后端FastCGI的超时时间。

fastcgi_send_timeout 300;
向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。

fastcgi_read_timeout 300;
接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。

60
同时处理的并发请求数,即它将开启最多60个子线程来处理并发连接。

102400
最多打开文件数。

204800
每个进程在重置之前能够执行的最多请求数。

等等

书 p 171
http://showerlee.blog.51cto.com/2047005/1287869

http://opkeep.com/system/linux/nginx-optimize.html
http://www.howtocn.org/nginx:%E9%85%8D%E7%BD%AE%E4%B8%80%E4%B8%AA%E9%AB%98%E6%80%A7%E8%83%BD%E7%9A%84nginx_fastcgi%E6%9C%8D%E5%8A%A1%E5%99%A8

linux初步安全设置

1、关闭系统不需要的服务,只开放必要的端口 nmap
2、用户方面,注释掉系统不需要的用户和用户组,严格审计系统的登录用户
3、防毒软件,不过用得少
4、日志管理
5、 设置比较复杂的口令检查登录密码 重要文件访问权限控制
6、允许和禁止远程访问 ,限制超级用户的权力, 禁止root直接openssh登录 ,设置跳板机 不直接openssh 到生产服务器
7、不使用“r”远程管理程序
8、采用加密传输手段
9、结合使用防火墙 iptables selinux 、snort 等入侵检测系统IDS等防护手段
10 优化Linux内核参数
11 其它 隐藏服务器系统信息 随时更新系统的最新核心 如果可以的话
11、综合防御,确保安全

http://www.ericos.cn/2002.html
http://linux.chinaitlab.com/server/887965.html
http://www.5dmail.net/html/2006-6-20/200662091559.htm

nginx 相比apache优点

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。

1可以高并发连接 2-4W并发
epool kqueue 网络I/O模型,而apache 使用传统的select 模型,pfefork模式为多进程模式,要经常派生子进程,所以用资源会高得多

2内存消耗少,轻量级,高性能

3成本低廉 不像什么F5

4 配置文件非常简单, Apache 比较复杂

5 其它理由
支持rewrite规则 内置的健康检查功能 节省带宽(gzip) 稳定性高 支持热部署 社区活跃,各种高性能模块出品
在见,nginx 在反向代理,rewrite规则,稳定性,静态文件处理,内存消耗等方面有很大的优势

其它
Apache在处理动态有优势,Nginx并发性比较好

http://lnmp.org/nginx.html
http://www.phpzixue.cn/detail1174.shtml

linux桌面常用软件介绍之 — — gnote

Gnote 是 Linux 上免费、开放源代码的桌面应用程式,由 Hubert Figuiere 从 Tomboy 复制而来。[1]它采用类似 Wiki 的连接方式,将笔记连在一起。Gnote 是 GNOME 桌面环境的一部份,用来做为个人资讯管理的工具。其主要原理是“记事本”加上 wiki 接口。在笔记内文的文字,只要符合现有笔记的标题,就会变成超连结;这能让使用者管理大量的个人资讯,例如笔记中会连到使用者最喜欢的艺人,其他含有这些艺人的笔记,会以高亮度标示出这些艺人的名字。插件可以让 Gnote 拥有其他功能,例如将笔记汇出为 HTML 格式,或打印笔记。

debain or ubuntu
apt-get install gnote -y

fedora
yum install gnote -y

官方主页https://wiki.gnome.org/Gnote

freenas Mount ext4 partition

1.
setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-current/Latest/
2.
To install the port:
cd /usr/ports/sysutils/fusefs-ext4fuse/ && make install clean

To add the package:
pkg_add -r fusefs-ext4fuse
3.
vi /etc/rc.conf
fusefs_enable="YES"

4.
kldload /boot/kernel/fuse.ko
5.
mkdir /mnt/myext4mount
/usr/local/bin/ext4fuse /dev/ada1 /mnt/myext4mount/

参考
http://www.forums.nas4free.org/viewtopic.php?f=64&t=1861
http://www.freshports.org/sysutils/fusefs-ext4fuse/