关于Linux可用空间一直为0的解决

今天在解决某高校CMS系统时,发现其可用服务器空间为0,已用百分比为100%,试着删除了部分无用内容后已用空间减少,但是可用空间依然为0.查阅相关资料后发现这是Linux的一个保护措施,会默认预留5%的空间给root用户使用。若想降低此预留比例到1%,可以执行:

sudo tune2fs -m 1 /dev/xvda3

参考:

http://superuser.com/questions/297863/available-disk-space-always-0

Linux下快速删除大量文件/文件夹方法

昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受。Google了一下,查到了一种方法,试用了下确实比单纯使用rm快了一个数量级。

方法见下:

1)首先建立一个空白文件夹。

mkdir /tmp/empty

2)之后使用以下语句即可快速的删除文件。

rsync –delete-before -d /tmp/empty/ /the/folder/you/want/delete/

原文中说不要忘记文件夹后的“/”

3)一杯咖啡过后,就Ok了。

更多详情可以参见:

linux 快速删除大量文件

RHEL 5.5 安装WAS 6.1中文乱码的解决办法

image

在RHEL中部署WAS环境,中文的时候总是乱码,查询了几种方法都未能解决。后来找到一种感觉靠谱的方法,成功的解决。只需要把系统中的中文字体拷贝到WAS安装路径下面的jre中的font文件夹下的fallback目录里即可。

这里假设我已经把was的安装文件拷贝到/tmp下面的was下面了。只需要执行。

 1: cd /tmp/was/JDK/jre.pak/repository/package.java.jre/java/jre/lib/fonts

 2: mkdir fallback

 3: ln -s /usr/share/fonts/chinese/TrueType/*.ttf ./fallback/

Done.

Windows 不能与Linux NTP时间服务器同步的解决方案

因为服务器区限制,仅有某几台服务器可以上外网,但是Linux服务器时间经常跑偏,于是决定搭建网内的NTP时间服务器,时间搭建服务器的过程我不详述,网上很多,在这里我说说一个奇怪的问题——搭建好的Windows服务器无法与之进行同步,就是在Internet时间那填上服务器地址点同步,老是失败,查看日志报接收到错误的时间数据。

从网上搜了一下,找到一个解决办法,只要在命令提示符内使用如下命令就搞定:

   1: net time /setsntp:time.sdyu.edu.cn

   2: net stop w32time

   3: net start w32time

然后,就搞定啦!嘿嘿

Ubuntu 10.10安装Vmware Tools

VMware

      Kaisir的部落格是部署在Ubuntu 10.10之上的,而这个Ubuntu又是安装在Vmware Server 2.0之上的,一直觉得网页访问起来有些慢(难道因为校园网网速问题?)今天通过探针一查,发现虚拟出来的这个Ubuntu的eth0流量及虚拟机的内存占用都很大,于是登录Vmware控制台查看,发现运行这么长时间以来虚拟机上竟然没有安装Vmware Tools,于是挂载Vmware Tools,安装,安装过程是需要Linux内核源码的,可是所有的源码都在,可是依然编译不成功,查询了网络上的资料,有说安装的包不全,有说需要做几个软连接,可是尝试下来,都没有成功,最后终于在某国外站点上找到一篇日志,他提到了Open-Vm-Tools,大体讲因为Linux发行版众多,Vmware没有办法一一涵盖这些发行版,于是就有了这样一个小组,来提供编译好之后的Vmware Tools(以及源代码包),在Ubuntu下的使用方法很简单,用apt-get install 安装完成就好了,只需要执行下面两个命令:

   1: apt-get install --no-install-recommends open-vm-dkms

   2: apt-get install open-vm-tools

然后,reboot 你的Ubuntu , All Done.

Linux下自动ping指定ip,若出错自动重启网卡的脚本

某台服务器网卡总是莫名其妙的down掉,每次down掉总要下机房手动重启网卡,很是麻烦,对于Kaisir这样的懒人,怎么能允许这种事情发生呢?于是,就有了下面的脚本,系统尝试ping指定ip5次,若出错就显示出错信息并执行重启网卡的命令。

在这个例子中,符号“2>&1”表示“将标准错误发送至标准输出被重定向的任何位置。关于这种重定向的用法,可点击这里

[codesyntax lang=”bash”]

#!/bin/sh
if ! ping -c 5 192.168.56.1 > /dev/null 2>&1
then
echo "The network is down! Now try restarting!" |  service network restart
fi

[/codesyntax]

当然,仅仅有了这些代码还不够,我们需要他能定时执行,这里大家一定能想到corntab命令,这里就不用我多费口舌了吧 :)

自动词法分析器,LEX

编译原理作业——编制一个词法分析器。

显然做这个作业有两种途径,
1)自己编
2)google+biadu+others.

昨天Simon童鞋给我说他们让搞lex,好吧那我也正好凑凑热闹,嘿嘿。结果别说,还让我整出来了,lex简单应用语法还是很简单的,附上我的lex源程序,kaisir.l
(我这个wp的代码高亮不支持lex,大家凑合着看吧  我懒……)

[codesyntax lang=”c”]

%{
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
int lineno=1;
%}
letter [A-Z,a-z]
digit [0-9]
id ({letter}|_)({letter}|{digit}|_)*
error_id ({digit})+({letter})+
num {digit}+
whitespace [t]+
enter [n]+
%%
"int"|"if"|"else"|"return"|"void"|"while" {Upper(yytext,yyleng);
printf("%d 行  ",lineno);
printf("%s	reserved wordn",yytext);
}
{num} {
printf("%d 行  ",lineno);
printf("%s	NUMn",yytext);
}
","|";"|"("|")"|"+"|"-"|"*"|"/"|"=="|"<="|">="|"!="|"=" {printf("%d 行  ",lineno);
printf("%s	special symboln",yytext);
}
{id} {printf("%d 行  ",lineno);
printf("%s	IDn",yytext);
}
{error_id} {printf("%d 行  ",lineno);
printf("error:	%sn",yytext);
}
{whitespace} {
}
{enter} {lineno++;
}
%%
Upper(char *s,int l){
int i;
for(i=0;i<l;i++)
{s[i]=toupper(s[i]);}
}
//Main
main(void)
{
  char filename[400];
  printf("file name:");
  scanf("%s",&filename);
  yyin=fopen(filename,"r");
  printf("Starting..n");
  return yylex();
}

[/codesyntax]

在ubuntu下使用

flex kaisir.l

顺利通过,之后使用gcc对flex生存的lex.yy.c进行编译,结果报错如下:

kaisir@Kaisir-ubuntu:~$ gcc -g lex.yy.c -o a.out
test.txt: In function 鈓ain?
test.txt:49: warning: format ?s?expects type 鈉har *? but argument 2 has type 鈉har (*)[400]?
/tmp/ccmK1ARZ.o: In function `yylex’:
/home/kaisir/lex.yy.c:902: undefined reference to `yywrap’
/tmp/ccmK1ARZ.o: In function `input’:
/home/kaisir/lex.yy.c:1237: undefined reference to `yywrap’
collect2: ld returned 1 exit status

大体看了下说是yylex这个函数找不到,baidu了下,编译的时候增加参数“–lfl” 顺利编译通过,写了个Test.C进行词法分析,No Problem!

kaisir@Kaisir-ubuntu:~$ ./a.out hellolex.c
file name:hellolex.c
Starting..
1 行  VOID      reserved word
1 行  main     ID
1 行  ( special symbol
1 行  ) special symbol
{3 行  INT      reserved word
3 行  a        ID
3 行  ; special symbol
4 行  a ID
4 行  = special symbol
4 行  10        NUM
4 行  ; special symbol
5 行  printf    ID
5 行  ( special symbol
5 行  a ID
5 行  ) special symbol
5 行  ; special symbol
}

Ubuntu Server下建立VPN服务器

对于想要在外部访问内部的网络,除了在防火墙上开启相应服务器所对应的端口,最好的方法应该是建立VPN-Server,使得用户可以在外网任何一台计算机上拨入到内网中进行操作,而且VPN可以记录详细的日志,出现问题也便于追查相应的责任人。

我们知道,VPN有很多种,比如Windows Server系列自己就带了VPN服务器,安装配置都非常简单,而今天我要在日志中介绍部署的,是Linux下的VPN-Server,基于PPTP协议。Ubuntu系统是基于Debian构造的一版发行版,交流社区非常活跃,而且因为基于Debian,他自己带的包管理器能很好的处理依赖关系,方便我们安装软件。

其实在Ubuntu下安装VPN-Server是非常非常Easy的,一句话就能搞定:

[codesyntax lang=”bash”]

sudo apt-get install pptpd

[/codesyntax]

嘿嘿 这样就搞定了,接下来的是一些配置,我们需要改三个文件,分别为: 继续阅读“Ubuntu Server下建立VPN服务器”

安装Fedora出现Section does not end with %%end的解决方案

今天在Vmware虚拟机中安装Fedora,结果出现了“Section does not end with %%end”这个错误,如下图:

放狗搜了下,发现出现这个错误的原因竟然是我使用了Vmware的向导来安装Fedora。既然如此解决方法也便知道啦!

方法一:不使用Vmware自带的操作系统安装向导

方法二:将自动安装自己添加的光驱删掉,然后从头启动安装,如下图: