分类目录归档:LINUX

Linux fsck命令

电脑的文件系统遇到不正常关机或硬件错误容易遭到破坏。Linux下可以使用fsck命令检查、修复文件系统。
使用fsck必须是超级用户。fsck检查所有在柱面群组的数据块映像中被标识为未使用的数据块,即空闲数据块。fsck检查合计空闲数据块的数目,加上被文件节点使用的数据块的数目,这个结果是否等于文件系统中所有数据块的总和。如果fsck发现数据块分配映像有错时,它会自动重建。概要信息中和超级数据块相联系的信息包含在文件系统中所有空闲数据块的数目。fsck将它检查所得到的空闲数据块数目和上面概要信息中的空闲数据块数目进行比较,如果两者不一致,fsck就将实际检查得到的空闲数据块覆盖概要信息中的空闲数据块信息。对空闲文件节点的检查也会做同样的处理。

注:由于fsck对磁盘的文件系统进行修复,直接在系统下运行容易把硬盘搞挂,最好用超级用户开机时在修复模式下使用

执行命令:

fsck

fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/sda1 is mounted.  

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? yes

/dev/sda1: recovering journal
Clearing orphaned inode 1230664 (uid=0, gid=0, mode=0100755, size=1296064)
Clearing orphaned inode 1230632 (uid=0, gid=0, mode=0100755, size=6364)
Clearing orphaned inode 349170 (uid=0, gid=0, mode=0100755, size=119460)
Clearing orphaned inode 349168 (uid=0, gid=0, mode=0100755, size=1203060)
Clearing orphaned inode 349166 (uid=0, gid=0, mode=0100755, size=9944)
/dev/sda1: clean, 24365/1310720 files, 229945/2621440 blocks

继续阅读Linux fsck命令

Linux文件类型

Linux中的文件分为:普通文件、目录文件、链接文件和设备文件。

1、普通文件
普通文件分为文本文件和二进制文件。

文本文件:以文本的ASCII码形式存储在计算机中。

二进制文件:以二进制形式存储在计算机中。

通过file命令可以用来判断文件类型。

举例:

file /bin/cp
/bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

2、目录文件
目录文件主要的目的是用于管理和组织系统中的大量文件。它存储一组相关文件的位置、大小等与文件有关的信息。

3、链接文件
链接文件分为软链接和硬链接。
继续阅读Linux文件类型

Linux文件描述符

在Linux操作系统上,把一切都看作是文件。Linux中的文件分为:普通文件、目录文件、链接文件和设备文件。

标准输入输出设备是一种设备文件,分别为:标准输入STDIN_FILENO(0),标准输出STDOUT_FILENO(1),出错处理STDERR_FILENO(2)。为了使用这个文件需要得到它的文件描述符,后面的0、1、2就是标准输入、标准输出、出错处理的文件描述符,程序通过标准输出的文件描述符,从中写入内容,可以达到屏幕显示功能。

对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传送给read或write。

文件描述符(file descriptor)在程序中定义为一个整型变量,相关操作有create、delete、open、close、read、wirte、seek,一般程序返回负数表示操作失败。例如将一个通用设备连接到Linux系统上,系统将它看作是一个文件,通过open函数(系统调用接口)和路径名获得它的文件描述符,在程序里使用相关函数对其进行操作。

在win32中有一个文件句柄(file handle)的概念,句柄用来管理不同的对象资源,比如窗口、对话框、画布、按钮、文件等等,应用程序能够通过句柄访问相应的对象的信息。它和Linux中的文件描述符还是有区别。

参考资料:
http://blog.csdn.net/linuxmichael/article/details/5156790
http://ciwnet.blog.sohu.com/48825936.html
http://blog.csdn.net/thefinals/article/details/7177720

CentOS Linux安装XODA文档管理系统

XODA是一个简单的文档管理系统,使用PHP和AJAX开发,不用数据库,可对包括文件和目录编辑附加的描述、标签和分类,并进行常规的操作,例如复制、移动、重命名、删除等。XODA官网:http://www.xoda.org。
它的作者在介绍里说,当初作者很喜欢的一个主机商DreamHost提供了50GB的备份空间,于是他传了很多个人的文件在上面。在远程主机运行着一个web server,然后,需要一个好的排序和查找工具。他找了很多的开源文档管理系统,但是都要有SQL在后端存储文档、文件的meta信息。没有一个是他想要的,所以他就开发了XODA。

1、安装apache和php

yum install httpd php php-bcmath php-gd php-mbstring php-xml php-process

apache要设置支持伪静态,php建议支持POSIX功能,安装php-process就可以了。具体配置apache和php的过程略过。

2、安装XODA
目前最新版为xoda-0.4.6。

cd /tmp
wget http://sourceforge.net/projects/xoda/files/xoda/xoda-0.4.6/xoda-0.4.6.tar.bz2/download
tar -jxvf xoda-0.4.6.tar.bz2
mv xoda-0.4.6 /var/www/html/xoda
chown -R apache:apache /var/www/html/xoda
cd /var/www/html/xoda/
cp config.sample.php config.php
继续阅读CentOS Linux安装XODA文档管理系统

使用gpg key加解密文件

gpg key除了在安装软件包时校验软件包签名,还可以用于加解密文件。这里系统为CentOS6.3。

1、首先创建gpg key

cd ~
gpg --gen-key

然后选择加密算法、加密强度、是否设置有效期,设置名称和邮箱,输入保护密码,最后在/root/.gnupg目录下生成公钥和私钥文件。
具体过程可参考:http://www.live-in.org/archives/1410.html中的创建过程。

创建结果:

要随时显示上列信息,执行:

gpg --fingerprint thomas@example.com

F24AC529是gpg key ID。
A443 76DF 2F35 1874 4F36 3FBA 5161 169D F24A C529是密钥指纹。
继续阅读使用gpg key加解密文件

从RPM包中提取文件

要从rpm包中提取一个配置文件可以使用rpm2cpio和cpio命令完成。系统为CentOS6.2。

rpm2cpio命令和cpio命令都是系统默认支持的命令。rpm2cpio命令是将一个rpm包转换成cpio档案格式显示在标准输出中(可保存为.cpio文件),cpio文件是UNIX系统下的一个打包格式,然后用cpio命令解压.cpio文件,最后提取出需要的文件。

以mytop-1.7-3.el6.noarch.rpm为例:

rpm2cpio mytop-1.7-3.el6.noarch.rpm > mytop.cpio
cpio -idmv < mytop.cpio

显示释放了usr目录:

./usr/bin/mytop
./usr/share/doc/mytop-1.7
./usr/share/doc/mytop-1.7/Changes
./usr/share/doc/mytop-1.7/README
./usr/share/man/man1/mytop.1.gz
137 blocks

参数说明:
-i:从文档中提取文件
-d:保持内部文件的目录
-m:创建文件时保持文件修改的时间(时间戳)
-v:显示处理进度

以上也可写成一句命令:
rpm2cpio mytop-1.7-3.el6.noarch.rpm | cpio -idmv

最后提取自己需要的文件就可以了。

CentOS Linux自建yum源

平时使用yum方式安装更新软件,可以自建一个yum源,同步官方更新源,这样如果本地有机器要升级的话就可以直接使用本地的更新源了。这里系统为CentOS 6.2。

一、服务端
1、安装需要的环境
自建yum本地更新源可以使用http服务或ftp服务,由于ftp服务器要考虑防火墙配置,主动、被动连接模式,这里使用http服务。

安装apache:

yum install httpd

配置apache过程略过。

2、安装createrepo软件包

yum install createrepo

3、建立存放软件包目录

mkdir -p /home/yum/centos/6/
chown -R apache:apache /home/yum/

4、apache创建虚拟目录

vim /etc/httpd/conf/httpd.conf
继续阅读CentOS Linux自建yum源

CentOS Linux安装mantis

Mantis是一个轻量级的缺陷管理平台(全称Mantis Bug Tracker),用来跟踪管理Bug,即bug管理系统。官网:http://www.mantisbt.org/

1、安装web server
Mantis是用PHP编写的,要安装一个PHP的web server。这里使用LAMP。

yum install httpd mysql mysql-devel mysql-server php php-mysql php-bcmath php-gd php-mbstring php-xml

配置LAMP过程略过。

PS:php.ini中要设置好date.timezone。

2、下载Mantis
目前最新稳定版为Mantis 1.2.11。

cd /tmp
wget http://sourceforge.net/projects/mantisbt/files/mantis-stable/1.2.11/mantisbt-1.2.11.tar.gz/download
tar -zxvf mantisbt-1.2.11.tar.gz
mv mantisbt-1.2.11 /var/www/html/mantis
chown -R apache:apache /var/www/html/mantis
继续阅读CentOS Linux安装mantis

CentOS Linux安装postfix邮件服务器

postfix是一个高效的邮件服务器,配置比sendmail简单,这里使用LAMP+postfix+dovecot+SquirrelMail搭建提供SMTP/POP3/IMAP的简单邮件服务。系统是CentOS6.2。

简单说明:
postfix是一个MTA即邮件传输代理。作为收件服务器。
dovecot是一个开源的IMAP和POP3邮件服务器。作为发件服务器。

准备工作:
1、卸载sendmail

yum remove sendmail

2、安装LAMP

yum install httpd mysql mysql-devel mysql-server php php-mysql php-bcmath php-gd php-mbstring php-xml php-imap

配置LAMP过程略过。

一、安装postfix
使用源码编译安装。
1、建立postfix所需的用户和组
建立postfix、postdrop组和postfix用户:

groupadd -g 2001 postfix
useradd -g postfix -u 1001 -s /sbin/nologin -M postfix
groupadd -g 2002 postdrop
继续阅读CentOS Linux安装postfix邮件服务器

Linux中RPM包命名规则

RPM包的一般格式为:
name-version-arch.rpm
name-version-arch.src.rpm

name:软件包名称。
version:带有主、次和修订的软件包版本。
arch:硬件平台。硬件平台包括了:i386、i486、i586、i686、x86_64、ppc、sparc、alpha
src.rpm:源代码包。

以“openssl-1.0.1c-1.fc18.i686.rpm”为例:

openssl:是软件名称。
1.0.1c-1:是软件版本。
i686:是适用的硬件平台。

其中还包含有特殊的名称:
1、fcXX,elXX:表示这个软件包的发行商版本,就像这里的fc18,说明这个软件包是在Fedora 18下使用的。而openssl-1.0.0-20.el6.x86_64.rpm表示这个软件包是在RHEL 6.x(Red Hat Enterprise Linux)/CentOS 6.x下使用。

2、devel:表示这个RPM包是软件的开发包,例如mysql-devel-5.1.52-1.el6_0.1.i686.rpm。

3、noarch:说明这样的软件包可以在任何平台上安装,不需要特定的硬件平台。在任何硬件平台上都可以运行。

了解了RPM包的命名规则,看到一个RPM包就能知道它适用的环境了。