如何查看所有分区的文件系统类型

*****

[root@fab-us ~]# file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)

[root@localhost ~]# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 47G 1.1G 44G 3% /
tmpfs tmpfs 500M 0 500M 0% /dev/shm
/dev/sda1 ext4 477M 28M 425M 6% /boot

http://bbs.chinaunix.net/thread-2015242-1-1.html

Linux系统挂载数据盘

近来fab买了个新服务器 于是得挂一下数据盘

[root@fab-us ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 1.4G 18G 8% /
tmpfs 938M 0 938M 0% /dev/shm
[root@fab-us ~]# fdisk -l

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078f9c

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 2611 20970496 83 Linux

Disk /dev/xvdb: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

查看原来的系统盘是什么格式 ,这里可见为 ext4 所以建议数据盘也为ext4
[root@fab-us ~]# file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)
[root@fab-us ~]# fdisk -S 56 /dev/xvdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x6618f00e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-29371, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-29371, default 29371):
Using default value 29371

Command (m for help): wq
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

echo ‘/dev/xvdb1 /data ext4 defaults 0 0’ >>/etc/fstab
mount -a

http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974154

避免openssh超时自动断开连接-Write failed: Broken pipe ssh断开

用OPENSSH过程连接服务器时,经常遇到长时间不操作而被服务器踢出的情况,常见的提示如:

Write failed: Broken pipe
一开始还以为是内网的问题呢
这是因为如果有一段时间在SSH连接上无数据传输,连接就会断开。解决此问题有两种方法。

方案一:在客户端设置(前提,你的办公本本或者pc 是os 是一个linux)
在客户端电脑上编辑(需要root权限)/etc/ssh/ssh_config,并添加如下一行:

ServerAliveInterval 60
此后该系统里的用户连接SSH时,每60秒会发一个KeepAlive请求,避免被踢。

方案二:在服务器端设置
如果有相应的权限,也可以在服务器端设置,即编辑/etc/ssh/sshd_config,并添加:
echo "ClientAliveInterval 60">>/etc/ssh/sshd_config; and then restart the sshd
重启OPENSSH服务器后该项设置会生效。每一个连接到此服务器上的客户端都会受其影响。应注意启用该功能后,安全性会有一定下降(比如忘记登出时……),所以 建议用客户端设置

如果您只想让当前的 ssh 保持连接,可以使用以下的命令:

$ ssh -o ServerAliveInterval=60 user@sshserver

更加详细的
当用SSH Secure Shell连接Linux时,如果几分钟没有任何操作,连接就会断开。必须重新登陆才行,每次都重复相同的操作,很是烦人,一般修改两个地方可将这烦人的问题解决

1、echo $TMOUT
如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之类文件中设置它为0.
Definition: TMOUT: If set to a value greater than zero, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if input does not arrive

2、修改/etc/ssh/sshd_config文件,将ClientAliveInterval 0和ClientAliveCountMax 3的注释符号去掉,将ClientAliveInterval对应的0改成60,ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0, 不发送.而ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
想参考更多,请输入man sshd_config了解更多信息

#操作命令
echo “ClientAliveInterval 60″>>/etc/ssh/sshd_config; and then restart the sshd

下面是man sshd_config获取的描述信息
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd will send a message through
the encrypted channel to request a response from the client.
The default is 0, indicating that these messages will not be
sent to the client. This option applies to protocol version 2
only.

ClientAliveCountMax
Sets the number of client alive messages (see above) which may
be sent without sshd receiving any messages back from the
client. If this threshold is reached while client alive mes-
sages are being sent, sshd will disconnect the client, terminat-
ing the session. It is important to note that the use of client
alive messages is very different from TCPKeepAlive (below). The
client alive messages are sent through the encrypted channel and
therefore will not be spoofable. The TCP keepalive option
enabled by TCPKeepAlive is spoofable. The client alive mecha-
nism is valuable when the client or server depend on knowing
when a connection has become inactive.
The default value is 3. If ClientAliveInterval (above) is set
to 15, and ClientAliveCountMax is left at the default, unrespon-
sive ssh clients will be disconnected after approximately 45
seconds.

http://www.osedu.net/article/linux/2012-05-02/405.html

参考资料
https://bbs.archlinux.org/viewtopic.php?id=97003
http://yunwei.blog.51cto.com/381136/432672

nginx信号处理与平滑升级 启动,重启,关闭命令

Nginx进程分为master进程和worker进程,我们可以通过信号来控制master进程。默认情况下,Nginx会把它的master进程id写到 nginx.pid中。你可以在编译的时候通过./configure来指定,或者在配置文件中用pid来配置。

Master进程能够接收并处理如下的信号:

ERM, INT(快速退出,当前的请求不执行完成就退出)
QUIT (优雅退出,执行完当前的请求后退出)
HUP (重新加载配置文件,用新的配置文件启动新worker进程,并优雅的关闭旧的worker进程)
USR1 (重新打开日志文件)# 这个日志切割时用得最多
USR2 (平滑的升级nginx二进制文件)
WINCH (优雅的关闭worker进程)
Worker进程也可以接收并处理一些信号:

TERM, INT (快速退出)0
QUIT (优雅退出)
USR1 (重新打开日志文件)
用HUP信号使Nginx加载新的配置文件
当Nginx接收到HUP信号的时候,它会尝试着去解析并应用这个配置文件,如果没有问题,那么它会创建新的worker进程,并发送信号给旧的 worker进程,让其优雅的退出。接收到信号的旧的worker进程会关闭监听socket,但是还会处理当前的请求,处理完请求之后,旧的 worker进程退出。如果Nginx不能够应用新的配置文件,那么仍将用旧的配置文件来提供服务。

在线升级Nginx二进制文件
当你想升级Nginx到一个新的版本,增加或减少module的时候,你需要替换Nginx的二进制文件,你可以平滑的实现它,没有请求会丢失。

首先,用新的二进制文件替换掉旧的,然后发送USR2信号给master进程。master进程会把自己的.pid文件重命名为.oldbin(例 如,/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新的二进制文件,从而启动一个新的master进程和新的worker进程:

PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)
33135 33126 nobody 0.0 1380 kqread nginx: worker process (nginx)
33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
在这个时候,有两个Nginx实例在运行,一起处理进来的请求。为了让旧的实例退出,你需要发送WINCH信号给旧的master进程,这样旧master进程的worker进程就会优雅的退出:

PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx)
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

一段时间后,旧的worker进程都已经退出了,只有新的worker进程处理进来的请求:
PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

这个时候你仍然可以通过以下几个步骤回滚到旧的服务,因为旧master进程并没有关闭其监听的socket: 发送HUP信号给旧的master进程,它会启动worker进程并且不需要重新加载配置文件 发送QUIT信号给新的master进程,让它优雅的终止其worker进程发送TERM信号给新的master进程,强制其退出 如果一些原因,新的worker进程没有退出,发送KILL信号给它们 当新的master进程退出之后,旧的master进程会删除其pid文件名中的后缀.oldbin,这样一切就又变成升级之前的样子。 如果一个升级已经成功,然后你想只保留新的server,那么发送QUIT信号给旧的master进程让新的server来提供服务:

PID PPID USER %CPU VSZ WCHAN COMMAND
36264 1 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
原文:http://wiki.nginx.org/NginxCommandLine

参考
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html

nginx log_format日志配置(转)

nginx日志相关的配置如access_log、log_format、open_log_file_cache、log_not_found、log_subrequest、rewrite_log、error_log。
nginx有一个非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义。ngx_http_log_module是用来定义请求日志格式的。

1. access_log指令

语法: access_log path [format [buffer=size [flush=time]]];
access_log path format gzip[=level] [buffer=size] [flush=time];
access_log syslog:server=address[,parameter=value] [format];
access_log off;
默认值: access_log logs/access.log combined;
配置段: http, server, location, if in location, limit_except
gzip压缩等级。
buffer设置内存缓存区大小。
flush保存在缓存区中的最长时间。
不记录日志:access_log off;
使用默认combined格式记录日志:access_log logs/access.log 或 access_log logs/access.log combined;

2. log_format指令

语法: log_format name string …;
默认值: log_format combined “…”;
配置段: http

name表示格式名称,string表示等义的格式。log_format有一个默认的无需设置的combined日志格式,相当于apache的combined日志格式,如下所示:

log_format combined ‘$remote_addr – $remote_user [$time_local] ‘
‘ “$request” $status $body_bytes_sent ‘
‘ “$http_referer” “$http_user_agent” ‘;
如果nginx位于负载均衡器,squid,nginx反向代理之后,web服务器无法直接获取到客户端真实的IP地址了。 $remote_addr获取反向代理的IP地址。反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,用来记录 客户端IP地址和客户端请求的服务器地址。PS: 获取用户真实IP 参见http://www.ttlsa.com/html/2235.html如下所示:

log_format porxy ‘$http_x_forwarded_for – $remote_user [$time_local] ‘
‘ “$request” $status $body_bytes_sent ‘
‘ “$http_referer” “$http_user_agent” ‘;
日志格式允许包含的变量注释如下:

$remote_addr, $http_x_forwarded_for 记录客户端IP地址
$remote_user 记录客户端用户名称
$request 记录请求的URL和HTTP协议
$status 记录请求状态
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
$bytes_sent 发送给客户端的总字节数。
$connection 连接的序列号。
$connection_requests 当前通过一个连接获得的请求数量。
$msec 日志写入时间。单位为秒,精度是毫秒。
$pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
$http_referer 记录从哪个页面链接访问过来的
$http_user_agent 记录客户端浏览器相关信息
$request_length 请求的长度(包括请求行,请求头和请求正文)。
$request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
$time_iso8601 ISO8601标准格式下的本地时间。
$time_local 通用日志格式下的本地时间。
[warning]发送给客户端的响应头拥有“sent_http_”前缀。 比如$sent_http_content_range。[/warning]
实例如下:

http {
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘”$status” $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for” ‘
‘”$gzip_ratio” $request_time $bytes_sent $request_length’;

log_format srcache_log ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘”$status” $body_bytes_sent $request_time $bytes_sent $request_length ‘
‘[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]’;

open_log_file_cache max=1000 inactive=60s;

server {
server_name ~^(www\.)?(.+)$;
access_log logs/$2-access.log main;
error_log logs/$2-error.log;

location /srcache {
access_log logs/access-srcache.log srcache_log;
}
}
}

ps : 这个logs 目录是在nginx 目录下
3. open_log_file_cache指令

语法: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
默认值: open_log_file_cache off;
配置段: http, server, location

对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭。可以使用open_log_file_cache来设置日志文件缓存(默认是off),格式如下:
参数注释如下:
max:设置缓存中的最大文件描述符数量,如果缓存被占满,采用LRU算法将描述符关闭。
inactive:设置存活时间,默认是10s
min_uses:设置在inactive时间段内,日志文件最少使用多少次后,该日志文件描述符记入缓存中,默认是1次
valid:设置检查频率,默认60s
off:禁用缓存
实例如下:

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
4. log_not_found指令

语法: log_not_found on | off;
默认值: log_not_found on;
配置段: http, server, location
是否在error_log中记录不存在的错误。默认是。

5. log_subrequest指令

语法: log_subrequest on | off;
默认值: log_subrequest off;
配置段: http, server, location
是否在access_log中记录子请求的访问日志。默认不记录。

6. rewrite_log指令

由ngx_http_rewrite_module模块提供的。用来记录重写日志的。对于调试重写规则建议开启。 Nginx重写规则指南
语法: rewrite_log on | off;
默认值: rewrite_log off;
配置段: http, server, location, if
启用时将在error log中记录notice级别的重写日志。

7. error_log指令

语法: error_log file | stderr | syslog:server=address[,parameter=value] [debug | info | notice | warn | error | crit | alert | emerg];
默认值: error_log logs/error.log error;
配置段: main, http, server, location
配置错误日志。

from
http://www.ttlsa.com/linux/the-nginx-log-configuration/

# from nginx.conf
log_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” $http_x_forwarded_for’;
include /usr/local/nginx/conf/vhost/*.conf;

相关说明
$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
$remote_user :用来记录客户端用户名称;
$time_local : 用来记录访问时间与时区;
$request : 用来记录请求的url与http协议;
$status : 用来记录请求状态;成功是200,
$body_bytes_s ent :记录发送给客户端文件主体内容大小;
$http_referer :用来记录从那个页面链接访问过来的;
$http_user_agent :记录客户毒啊浏览器的相关信息;

http://www.ttlsa.com/linux/the-nginx-log-configuration/

查看修改mysql编码方式

mysql> show variables like 'character%';
+————————–+———————————-+
| Variable_name | Value |
+————————–+———————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+————————–+———————————-+

从以上信息可知数据库的编码为utf8 如果为latin1,需要修改为gbk或者是utf8;其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码;character_set_results结果集的编码;character_set_server数据库服务器的编码;只要保证以上四个采用的编码方式一样,就不会出现乱码问题

另一个查看数据库编码的命令:
ysql> show variables like ‘collation%’;
+———————-+—————–+
| Variable_name | Value |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |

2、linux系统下,修改MySQL数据库默认编码的步骤为:
停止MySQL的运行
/etc/init.d/mysql start (stop) 为启动和停止服务器
MySQL主配置文件为my.cnf,一般目录为/etc/mysql
var/lib/mysql/ 放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹
当我们需要修改MySQL数据库的默认编码时,需要编辑my.cnf文件进行编码修改,在linux下修改mysql的配置文件my.cnf,文件位置默认/etc/my.cnf文件(如果/etc/mysql/my.cnf下没有my.cnf,可在/usr/share/mysql拷贝一个.cnf 的文件,如my-small.cnf,重命名为my.cnf进行修改!)

找到客户端配置[client] 在下面添加 default-character-set=utf8 #默认字符集为utf8 在找到[mysqld] 添加
default-character-set=utf8 #默认字符集为utf8
init_connect=’SET NAMES utf8′ #(设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

修改好后,重新启动mysql 即可,重新查询数据库编码可发现编码方式的改变:
>show variables like ‘character%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf

3、windows系统下可以删除MySQL数据库,并重新安装,在安装过程中可以直接用Mysql Server Instance Config Wizard 进行设置

4、当MySQL数据库服务器已经有数据不适合删除重装时,可以个别指定数据库的编码方式。MySQL指定编码的方式是非常灵活并多样化的,可以指定表级别的编码,行级别编码,甚至可以指定字段级别的编码。
以下示例给出创建数据库时指定编码的两种方式:
1)CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;
2)create database if not exists netctoss default character set utf8;
5、如果你采用的是外部接入的方式,可以在连接中确定请求的编码格式如:jdbc:mysql://localhost:3306 /mysql?useUnicode=true&characterEncoding=utf-8(注意:不要出现任何空格,否则出错)
6、执行脚本:指定编码格式set names gbk(注意,不是UTF-8)可以修改
执行前:
执行后:
从执行命令前后可知,set names gbk只可以修改character_set_client、character_set_connection、 character_set_results的编码方式,并且这种修改是窗口级别的,只针对本窗口有效,打开另外一个窗口修改无效。也可发现数据库底层的编码方式没有改变,插入数据后还是以utf8编码方式保持。

其它参考
http://blog.csdn.net/millia/article/details/5806774
http://blog.csdn.net/qiyuexuelang/article/details/9049985

tortoisesvn下载

一般程序哥都喜欢 tortoisesvn 这个海龟,但是有时应该乱下载 会发现中文语言包安装不上,在这里有个办法 尽量到官网吧 亲

官网 http://sourceforge.net/projects/tortoisesvn/

应用程序包下载 http://sourceforge.net/projects/tortoisesvn/files/?source=navbar
自己选择版本哦

我以此时的最新版本 1.8.10 作例子
http://sourceforge.net/projects/tortoisesvn/files/1.8.10/

程序安装包 win 32 为 32bit ; x64 为64bit
http://sourceforge.net/projects/tortoisesvn/files/1.8.10/Application/

语言包 同样 win 32 为 32bit ; x64 为64bit 和上面版本对应
http://sourceforge.net/projects/tortoisesvn/files/1.8.10/Language%20Packs/

svn co “GNOME KEYRING 被锁定,并且我们处于非交互方式” 解决方法

狼来了 问题来了
evan@evankali:~/jianyou$ svn checkout svn://22.153.11.206/dusvn
GNOME keyring [login] 的密码:
svn: GNOME Keyring 被锁定,并且我们处于非交互方式

evan@evankali:~/jianyou$ vi ~/.subversion/config
evan@evankali:~/jianyou$ svn checkout svn://22.153.11.206/dusvn
svn: /home/evan/.subversion/config:17: Option expected
evan@evankali:~/jianyou$ vi ~/.subversion/config
evan@evankali:~/jianyou$ svn checkout vn://22.153.11.206/dusvn
认证领域: /data/dusvn
“evan”的密码:
认证领域: /data/dusvn
用户名:

原来是个bug
debian Linux 以及衍申版或其他Linux,在使用Gnome2桌面并有SVN(subversion) 使用时,会出现下述问题:
GNOME keyring [login] 的密码:
svn: GNOME Keyring 被锁定,并且我们处于非交互方式

据称原因是: Gnome2桌面与SVN(Subversion)的一个key冲突导致。

解决方法:

(每个方法都是单一的,一种不行可试另一种)

1、根本的解决办法: good

编辑 ~/.subversion/config ,去掉 “gnome-keyring”

# password-stores = gnome-keyring,kwallet
改为
password-stores = kwallet

2、删除 ~/.gnome2/keyring/loging.keyring目录

3、删除 ~/.gnome2/keyring/defult.keyring 或 ~/.gnome2/keyring/默认.keyring目录

4、删除 ~/.gnome2/keyring 目录

5、提示密码输入时输入root密码

How to install/remove mate Desktop/Window Manager in Kali Linux 1.x

其它有时候还是觉得gnome2 好用,于是 哈哈哈哈

echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list && apt-get update
apt-get install kali-defaults kali-root-login desktop-base mate-core

官网文档
http://wiki.mate-desktop.org/download

How to install/remove different Desktop/Window Manager in Kali Linux 1.x
https://forums.kali.org/showthread.php?17716-How-to-install-remove-different-Desktop-Window-Manager-in-Kali-Linux-1-x