h1. Linux相关QA
h3. 关闭Debian图形界面的方法
0. 使用【aptitude install sysv-rc-conf】命令安装启动项配置工具;(安装时请使用VBox插入ISO文件)
1. 运行【sysv-rc-conf】命令启动配置工具。在配置工具中将【gdm】所对应行的【X】全部变为空;(使用空格键选择)
!1.JPG!
2. 重启即可;
h3. bash下连续执行多条命令的方法
法1 : $ls && echo hello && echo Hi
法2 : $ls ; echo hello ; echo Hi
h3. debian安装源的更新
# $vim /etc/apt/sources.list
在其中添加新的安装源
例
<pre>
deb file:///mnt/debian4/dvd01 etch main contrib
deb file:///mnt/debian4/dvd02 etch main contrib
deb file:///mnt/debian4/dvd03 etch main contrib
</pre>
# $aptitude update && aptitude upgrade
h3. Linux下统计代码行数
* 举例说明
<pre>
find ./ \( -path './lib' -o -path './script' -o -path './vendor' -o -path './public' -o -path './tmp' -o -path '*/.svn' -o -path './log' -o -path './data' \) -a -prune -o -name "*" | xargs wc -l
</pre>
打印当前目录下,除lib,script,vendor,public,tmp,log,data目录及其子目录并且除去当前目录及子目录中所有名为.svn的目录及子目录以外的所有文件的行数,并统计总行数。
h3. 执行shell时出现 /bin/sh^M: bad interpreter: No such file or directory
* 原因
在windos上编辑过sh文件,导致编码不是unix的
* 解决
vim xxx.sh
:set ff 查看当前编码,应该是dos
:set ff=unix 设置编码为unix
保存退出,问题解决
h3. 在Linux文件权限中,有R,W,X,S,T.权限s是什么意思
* r(Read,读取)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
* w(Write,写入)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
* x(eXecute,执行)
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
* s或S(SUID,Set UID)
可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。
* T或T(Sticky)
/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。
* R,W,X是基本权限 S、T是特殊权限
h3. 查找含有指定内容的文件
* 从文件内容查找匹配指定字符串的行
<pre>$ grep "被查找的字符串" 文件名</pre>
* 从文件内容查找与正则表达式匹配的行
<pre>$ grep –e “正则表达式” 文件名</pre>
* 查找时不区分大小写
<pre>$ grep –i "被查找的字符串" 文件名</pre>
* 查找匹配的行数
<pre>$ grep -c "被查找的字符串" 文件名</pre>
* 从文件内容查找不匹配指定字符串的行
<pre>$ grep –v "被查找的字符串" 文件名</pre>
* *从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行*
<pre>$ find / -type f -name "*.log" | xargs grep "ERROR"</pre>
* 前面关于grep的使用方法,可以和find组合使用
h3. 创建守护进程用户和用户组
以创建mysql守护进程用户为例
<pre>
# groupadd mysqladmin
# useradd -g mysqladmin -M -s /sbin/nologin mysql (Redhat)
# useradd -g mysqladmin -s /usr/sbin/nologin mysql (Debian4)
</pre>
参数说明
<pre>
-g 指定用户组
-M 设定不创建用户目录 (Redhat)
-m 创建用户目录 (Debian)
-s /sbin/nologin 设定该用户无法登陆(有的linux在/usr/sbin/nologin)
</pre>
注意这些用户是不能用su之类登陆的
h3. Rails应用中异步调用外部命令的方式
* 插件方式
有很多针对rails的任务插件,可以完成包括定时执行等比较复杂的任务。具体的google一下,这个不列举了
* fork方式
这是最基本的异步调用方式
需要注意的是:
** 如果要一步运行一个外部命令,这个外部命令和Rails应用本身关系不大
比如一个batch,这时应该写一个ruby脚本,在脚本中用fork方式进行调用
之所以这样做,是因为直接在rails中用fork的话,会把当前rails进程的所有资源全部载入,代价太大
如果单独写一个脚本,fork只会载入这个脚本所在进程的资源,比较经济
** 如果需要异步执行的任务和Rails应用根本身关系紧密的话,用fork方式的话需要衡量引入的代价。
** 在Linux(Debian)下,通过ruby调用shell时,shell的执行者是nobody,如果有写操作的话,注意权限问题
h3. bash shell的运行方式
一个bash脚本,就是包含shell命令的文件,它是一个shell程序。
运行一个shell脚本有两种方式
* source scriptname
source scriptname使得脚本中的命令被读取并运行 ,就好像是键入它们一样。
source方式不用把文件权限改为可运行
* 简单键入脚本的名字 然后回车。
这种方式就像调用一个内置命令一样。当然,这种方式更方便一些。
脚本必须具有可执行权限。
*更重要的差别
当使用source使得脚本里的命令被执行时,就好像它们是登录传话的一部分,
而第二种方法使得shell做一系列操作。
首先,它运行 shell的另一个副本作为一个子进行,称为子shell。
然后该子sehll从脚本中取得命令,运行 它们,再中断,将控制权返回给父shell。
** 举例说明
假定你有一个shell脚本alice,它包含了命令hatter和gryphon。
# 在键入source alice使得两个方法运行在同一个shell下,就像你自己键入的一样。如图a
# 只键入alice时,子shell内命令运行,同时父shell静待子shell完成。如图b
# 使用&使命令运行在后台时,实际上啥时一个“进程”的另一称谓。其实际效果如图c
!http://redmine.dhc.com.cn/attachments/188/run_shell.png!
h3. Linux Shell(batch) 防止多重启动的方法
<pre><code class="ruby">
#!/bin/bash
BASENAME=`basename $0 .sh`
PID_FILE="$BASENAME.pid"
if [ -f $PID_FILE ]; then
STORED_PID=`cat $PID_FILE`
if (ps -p ${STORED_PID} -o pid= >/dev/null); then
echo "Locked by PID($STORED_PID)"
exit
fi
fi
echo $$ > $PID_FILE
# ここに処理を書く
sleep 10
rm $PID_FILE
</code></pre>
h3. Debian中修改主机名(Hostname)
在Debian及其衍生版本中,hostname都可以通过一下方式修改。众所周知,Linux的一切都是存在于文件当中的,事实上UNIX是这种哲学的创立者。Debian中hostname存在于以下文件。
<pre>
/etc/hostname
</pre>
文件内容就是hostname,直接改变文件内容即可。然后需要更新hostname,以便让其他程序使用。
<pre>
$sudo /etc/init.d/hostname.sh start
</pre>
啰嗦两句:其实Linux每次启动的时候都是读取这个文件的内容来设置hostname的,而/etc/init.d/hostname.sh就是干这个活的~~
h3. 查看Linux内核、GNU C Library(glibc)、gcc版本
unmae -a #只能查看内核版本
/lib/libc.so.6 #内核,glibc,gcc版本
以下是Debian6的输出
<pre>
root@lemonDebian6:~# /lib/libc.so.6
GNU C Library (Debian EGLIBC 2.11.2-11) stable release version 2.11.2, by Roland McGrath et al.
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.4.5.
Compiled on a Linux 2.6.32 system on 2011-01-31.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.
</pre>
h3. 查看硬件信息
<pre>
1. CPU
# more /proc/cpuinfo | grep "model name"
cpu位数
# getconf LONG_BIT
2. 内存
# more /proc/meminfo | grep MemTotal
3. 硬盘
# fdisk -l
磁盘使用情况(mount上的)
# df -h
系统启动的服务
# chkconfig –list | grep 3:on | cut -f1
</pre>
h3. linux下查看用户,用户组列表
<pre>
# cat /etc/passwd 可以查看所有用户的列表
# w 可以查看当前活跃的用户列表
# cat /etc/group 查看用户组
# groups xxx 显示xxx用户所属的用户组,如果不加xxx则显示当前用户所属的用户组
</pre>
h3. Linux下查看目录大小
<pre>
du -sm <dir> (单位M)
du –sm * 当前文件夹下所有文件,文件夹大小(单位M)
du –sh * (单位G)
</pre>
h3. debian下安装dos2unix
<pre>
aptitude install sysutils
</pre>
h3. 什么是pid,pid文件
pid就是程序的主进程号,kill <pid>
pid文件就是一个纯文本文件,里面记录的是进程的pid号。
h3. 为apt-get设置http代理
* 方法一
这是一种临时的手段,如果您仅仅是暂时需要通过http代理使用apt-get,您可以使用这种方式。
在使用apt-get之前,在终端中输入以下命令(根据您的实际情况替换yourproxyaddress和proxyport)。
export http_proxy=http://yourproxyaddress:proxyport
* 方法二
这种方法要用到/etc/apt/文件夹下的apt.conf文件。如果您希望apt-get(而不是其他应用程序)一直使用http代理,您可以使用这种方式。
* 注意: 某些情况下,系统安装过程中没有建立apt配置文件。下面的操作将视情况修改现有的配置文件或者新建配置文件。
sudo gedit /etc/apt/apt.conf
在您的apt.conf文件中加入下面这行(根据你的实际情况替换yourproxyaddress和proxyport)。
Acquire::http::Proxy “http://yourproxyaddress:proxyport”;
保存apt.conf文件。
* 方法三
这种方法会在您的主目录下的.bashrc文件中添加两行。如果您希望apt-get和其他应用程序如wget等都使用http代理,您可以使用这种方式。
gedit ~/.bashrc
在您的.bashrc文件末尾添加如下内容(根据你的实际情况替换yourproxyaddress和proxyport)。
http_proxy=http://yourproxyaddress:proxyport
export http_proxy
使用apt-get update或者任何您想用的网络工具测试代理。
rpm包下载站
http://rpm.pbone.net/
wget 下载
后台下载:
wget -d http://xxxx
这个命令会在当前目录建立一个名为wget-log.1的log文件(也可以用-o命令来制定输出log文件),下载进度和速度会被输出到这个文件中。
h3. 安装开发包(c编译器)
用aptitdue命令选择安装全部libdevl下的package
<pre>
apt-get install build-essential
</pre>
h3. 编译apache的时候出zlib错误的解决方法
Error message:
<pre>
checking for zlib location... not found
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
</pre>
安装zlib可以解决,命令
<pre>
apt-get install zlib1g-dev
</pre>
h3. vim配色
* 首先,安装vim-full(系统自带的一般是vim-tiny)
aptitude install vim-full
* 然后
vim /etc/vim/vimrc
找到syntax on,去掉前面的注释。
* vi ~/.vimrc
添加这句话 : colorscheme murphy
(murphy可以换车任意一个/usr/share/vim/vim73/colors下的配色方案。
* 如果觉得系统自带的不够用可以到http://code.google.com/p/vimcolorschemetest/上去找想要的vim配色方案。)
h3. ls显示彩色
* 临时生效
临时生效彩色的话可以通过执行alias ls='ls --color',关掉终端就不再显示了
* 永久生效
修改~/.bashrc ,将下面的内容打开("#"去掉即可)
<pre>
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
</pre>
h3. SSH的安装
<pre>
apt-get install openssh-server
apt-get install ssh
</pre>
h3. SSH远程登陆服务器时,密码验证慢,登陆后正常
* 原因
登陆时访问DNS(这种情况在无法联通DNS时会比较明显)
* 解决
vim /etc/ssh/sshd_config
末尾最佳
<pre>
UseDNS=no 或 UseDNS no (看前面的配置用不用=)
</pre>
h3. 查看用apt-get install <name>安装的程序路径
<pre>
dpkg -L <name>
比如 dpkg -L subversion 用来查看用apt-get install subversion 命令安装的subversion所在的路径。
</pre>
h3. debian下安装rpm包
<pre>
# apt-get install alien
安装用于处理rpm的工具
# alien -i XXXX.rpm
运气好的话,就安装成功,可以省略后面的东西了,如果运气不好报error: incorrect format: unknown tag ... 那就看下面吧
# alien -V
安装不成的话就看下alien的版本,把万恶的rpm转换成deb包吧
# alien -d xxx.rpm
转换rpm为deb包,ls下会发现该目录有个deb的安装包
# dpkg -i xxx.deb
安装成功!
</pre>
h3. 添加/删除启动项目
* Debian
<pre>
1) 要先安装启动项管理软件rcconf
apt-get install rcconf
2) 在/etc/init.d/建立启动脚本 如: myStartService
在myStartService中写入启动命名
如svnservice的启动(可以添加多个启动命令)
/opt/subversion-1.6.15/bin/svnserve -d -r /home/svn/svnroot
3) chmod 700 start
4) 然后rcconf ,出现界面,移动到myStartService,按空格选择,然后按回车,生效。
</pre>
* CentOS
<pre>
1) 在/etc/init.d/建立启动脚本 如: myStartService
2) 在myStartService中加入注释如下:
#add for chkconfig
#chkconfig: 2345 70 30
#description: the description of the shell #关于脚本的简短描述
#processname: servicename
说明:
2345是指脚本的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5就是图形界面X
70是指脚本将来的启动顺序号,如果别的程序的启动顺序号比70小(比如44、45),则脚本需要等这些程序都启动以后才启动。
30是指系统关闭时,脚本的停止顺序号。
3) chmod +x myStartService
4) chkconfig --add myStartService
------------------
chkconfig的使用方法
chkconfig(check config)
功能说明:检查,设置系统的各种服务。
语 法:chkconfig
[--add][--del][--list][系统服务]或chkconfig[--level<等级代号>][系统服务][on/off/reset]
补充说明:这是RedHat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
参数:
–add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
–del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
–level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕
1:chkconfig 命令也可以用来激活和解除服务。chkconfig –list 命令显示系统服务列表,以及这些服务在运行级别0到6中已被启动(on)还是停止(off)。
chkconfig –list
chkconfig –list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2:chkconfig 还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。譬如,要在运行级别3、4、5中停运 nscd 服务,使用下面的命令:
chkconfig –level 345 nscd off
------------------
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory解决
root@lemonDebian6:~# locate libevent
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
root@lemonDebian6:~# updatedb
</pre>
h3. /bin/rm: Argument list too long
* 原因
删除大量文件的时候可能会遇到这个错误
* 解决
用下面命令,分组删除之
<pre>
ls | grep filew | xargs -n 10 rm -fr
以上命令把根目录上所有的以filew开头的文件以10个一组删除之
</pre>
h3. CentOS 上的Apache不能被远程访问(127.0.0.1可用)
* 原因
没有开启CentOS的防火墙
* 解决
<pre>
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
</pre>
h3. tar解压命令
<pre>
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
</pre>
h3. tar解压一个目录下的所有tar.gz文件到指定目录
find -iname "*.tar.gz" -exec tar -zxvf {} -C /opt/source/ \;
h3. tar打包文件夹
tar cvzf xxx.tar.gz xxx/
h3. 关于cannot restore segment prot after reloc: Permission denied
这个错误是我在编译完PHP以后,启动apache时出现的。
h3. Cannot load /usr/local/apache/apache4svn/modules/libphp5.so into server: /usr/local/apache/apache4svn/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
* 原因
这是由SELinux引起的问题
* SELinux是什么?
SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency)领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击,据 称相当于B1级的军事安全性能。比MS NT所谓的C2等高得多。
* 解决办法
把无法载入的so加入例外列表
<pre>
1.开启例外列表
#setsebool -P allow_execheap=1
2.把不能载入的so加入列表
#chcon -t texrel_shlib_t /usr/local/apache/apache4svn/modules/libphp5.so
mount iso
mount -t iso9660 /opt/centosiso/CentOS-5.5-i386-bin-1of7.iso /mnt/centoscds/centoscd1 -o loop
</pre>
h3. 系统软件包安装规范
<pre>
系统约定:
软件源代码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local
脚本以及维护程序存放位置 /usr/local/sbin
MySQL 数据库位置 /data/mysqldb(可按情况设置)
php安装位置 /usr/local/webserver/nginx
nginx安装位置 /usr/local/webserver/php
网站根目录 /data/htdocs/bbs(可按情况设置)
虚拟主机日志根目录 /data/logs(可按情况设置)
Nginx运行账户 www:www
</pre>
h3. Centos 以iso作为yum源
<pre>
1. 下载好iso (vcd dvd均可),放在 /opt/centosiso/
2. mkdir /mnt/centoscds
mkdir /mnt/centoscds/centoscd1
mkdir /mnt/centoscds/centoscd2
…... 有几个iso,建几个文件夹
3. mount -t iso9660 /opt/centosiso/CentOS-5.5-i386-bin-1of7.iso /mnt/centoscds/centoscd1 -o loop (把iso分别mount到不同的目录下)
4. cd /mnt/centoscds
createrepo -g /mnt/centoscds/centoscd1/repodata/comps.xml .
5. 配置
vim /etc/yum.repos.d/CentOS-Media.repo
[c5-media]
name=CentOS-$releasever - Media
#baseurl=file:///media/CentOS/
# file:///media/cdrom/ssh
# file:///media/cdrecorder/
baseurl=file:///mnt/centoscds/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
6. 把其他的.repo文件重命名为非.repo结尾的文件。
7. yum repolist
看看是否只有c5-media 在列表中,如果只有这一个repo那么设置完成。
</pre>
h3. 给Centos加装图形界面
如果使用最小安装,则没有图形界面,有些软件比如vmware,vbox需要图形界面才行。
* 加装图形界面的方法如下:
确保能联网或者已经把iso作为yum源
<pre>
1. 安装图形界面(GNOME)
yum -y groupinstall 'X Window System' 'GNOME Desktop Environment'
2. 切换到图形界面
init 5
3. 如果你还希望每次重启后都进入图形桌面,那么需要修改/etc/inittab文件
sed -i 's/[0-6]:initdefault:/5:initdefault:/g' /etc/inittab
如果想每次进入文字界面
sed -i 's/[0-6]:initdefault:/3:initdefault:/g' /etc/inittab
</pre>
h3. Centos5.5安装vbox
* 安装
<pre>
1. wget http://download.virtualbox.org/virtualbox/4.0.6/VirtualBox-4.0-4.0.6_71344_rhel5-1.i386.rpm
2. yum --nogpgcheck install VirtualBox-4.0-4.0.6_71344_rhel5-1.i386.rpm
出现错误:
error: Failed dependencies:
libSDL-1.2.so.0 is needed by VirtualBox-4.0-4.0.6_71344_rhel5-1.i386
3. yum -y install SDL
yum -y install SDL-devel
解决上面问题
4. 安装dkms
执行完上面3步,启动如果还是有错误,提示执行 /etc/init.d/vbocdrv setup
# /etc/init.d/vbocdrv setup
提示错误:
Trying to register the VirtualBox kernel modules using DKMS [FAILED]
(Failed, trying without DKMS)
这个时候就要安装dkms了,上网上找centos用的dkms的rpm安装之。
关于更多的/etc/init.d/vbocdrv setup 执行时遇到的问题参考Troubleshooting
</pre>
* Troubleshooting
<pre>
vbox和系统内核结合的比较紧密,所以升级内核会导致重新编译vbox。
1. 如果以前升级过gcc,而又没有用升级过的gcc编译过内核。则系统的gcc版本与kernel内核不一致
解决方法:
把gcc恢复的和内核一致的版本(删除软连接,恢复原来的gcc # mv gcc412 gcc)。
执行完/etc/init.d/vboxdrv 成功后,再把gcc版本恢复回去(# mv gcc gcc412 #ln -s /usr/local/gcc-4.6.0/bin/gcc /usr/bin/gcc)。
2. /usr/src/kernel/下面没有和 # uname -r 同名的文件夹
解决方法:
yum install kernel-devel
</pre>
h3. vmWare虚拟机与宿主机之间共享上网
* 目标
<pre>
1. 宿主机不联网(包括internet和局域网)的情况下宿主机和虚拟机可以互访
2. 宿主机联局域网,虚拟机和网络上其他机器可以互访
3. 在2的基础上,宿主机通过路由连接internet,虚拟机可以访问internet
</pre>
* 实现方法
<pre>
1. Bridaged(桥接)可以满足上面2和3
a) vmWare设定
桥接的时候虚拟网卡要设置在VMnet0上,Bridaged to 中选择上网的网卡
b) 虚拟机设置(CentOS5.5)
IP设置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
#BOOTPROTO=dhcp
HWADDR=00:0C:29:F0:B6:98
# Wireless enable
BOOTPROTO=static
IPADDR=192.168.1.88
NETMASK=255.255.255.0
NETWORK=192.168.1.0
IPV6INIT=no
IPV6_AUTOCONF=no
NBOOT=yes
DNS设置
vim /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 60.20.160.1
nameserver 8.8.8.8
重启network
/etc/init.d/network restart
2.NAT方式,可以达到目标1
a) vmWare设置
b) VMnet8设置(网络->属性)
c) 虚拟机设置
与Bridaged方式设置相同。
3.两种模式切换
前提:已经完成1,2中的设置。
只需要在Virtue Machine Setting中选择Bridaged或NAT,然后重启虚拟机即可生效。
vmware下的centos挂载vmware的cdrom
mkdir /mnt/dvd
mount /dev/cdrom /mnt/dvd
</pre>
h3. Linux 修改系统时间
例:把系统时间改为 2011年5月2日14:06:33
<pre>
date -s 05/02/2011
date -s 14:06:33
</pre>
h3. CentOS5.5挂载win7共享文件夹
* 说明:
1. Linux和windows之间共享文件夹要通过samba服务,RHEL4以后用的是cifs(Common Internet File Systemcifs,MS的一种通用的协议,Windows下的网上邻居访问其它计算机就是使用cifs协议)这也是samba的一部分。所以要安装samba才能挂载
yum install samba3x
yum install samba3x -client
2. Win7(旗舰版)有一个“家庭组”的概念。Linux应该是不能加入家庭组的。所以CentOS在mount win7的共享文件夹时,需要一个有密码的windows用户才行。相当于家庭组外的系统要访问家庭组内的资源。
* 配置:
1. 创建windows用户
创建一个有密码的windows用户
Uname : share
Pwd : share
2. 创建共享文件夹(右键属性要共享的文件夹)
3. Mount
事先在/etc/host中加入win7主机
mount -t cifs //LEMONGRAPE/linux -o username="share",password="share" ,codepage=936,iocharset=utf8 /mnt/win7_share
* 说明:红字部分是为了让windows share folder中的中文(日文)能够正常显示。
验证远程主机是否开机
通过ping的方式验证
h3. 提示行基础
在 bash 下,可以通过更改 PS1 环境变量的值来设置提示行,如下所示:
<pre>
$ export PS1="> "
>
</pre>
更改会立即生效,通过将 "export" 定义放在您的 ~/.bashrc 文件中可将这种更改固定下来。只要您愿意,PS1 可以包含任意数量的纯文本:
<pre>
$ export PS1="This is my super prompt > "
This is my super prompt >
</pre>
尽管这很有趣,但在提示行中包含大量静态文本并不是特别有用。大多数定制的提示行包含诸如用户名、工作目录或主机名之类的信息。这些花絮信息可以帮助您在 shell 世界中遨游。例如,下面的提示行将显示您的用户名和主机名:
<pre>
$ export PS1="u@H > "
drobbins@freebox >
</pre>
这个提示行对于那些以多个不同名称的帐户登录多台机器的人尤为有用,因为它可以提醒您:您目前在哪台机器上操作,拥有什么权限。
在上面的示例中,我们使用了专用的用反斜杠转义的字符序列,藉此通知 bash 将用户名和主机名插入提示行中,当这些转义字符序列出现在 PS1 变量中时,bash 就会用特定的值替换它们。我们使用了序列 "u"(表示用户名)和 "H"(表示主机名的第一部分)。下面是 bash 可识别的全部专用序列的完整列表(您可以在 bash man page 的 "PROMPTING" 部分找到这个列表):
<pre>
序列 说明
a ASCII 响铃字符(也可以键入 07)
d "Wed Sep 06" 格式的日期
e ASCII 转义字符(也可以键入 33)
h 主机名的第一部分(如 "mybox")
H 主机的全称(如 "mybox.mydomain.com")
j 在此 shell 中通过按 ^Z 挂起的进程数
l 此 shell 的终端设备名(如 "ttyp4")
换行符
回车符
s shell 的名称(如 "bash")
24 小时制时间(如 "23:01:01")
T 12 小时制时间(如 "11:01:01")
@ 带有 am/pm 的 12 小时制时间
u 用户名
v bash 的版本(如 2.04)
V Bash 版本(包括补丁级别) ?/td>
w 当前工作目录(如 "/home/drobbins")
W 当前工作目录的“基名 (basename)”(如 "drobbins")
! 当前命令在历史缓冲区中的位置
# 命令编号(只要您键入内容,它就会在每次提示时累加)
$ 如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"
xxx 插入一个用三位数 xxx(用零代替未使用的数字,如 "07")表示的 ASCII 字符
反斜杠
[ 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash 能够正确计算自动换行。
] 这个序列应该出现在非打印字符序列之后。
</pre>
h3. Starting MTA...造成启动慢的问题
解决Debian中由于"Starting MTA..."造成启动慢的问题
我用的是Debian Lenny,我发现每次启动到 "Starting MTA..." 时都得等上很久,有时候甚至得一分多钟,太难受了。
今天在网上找到了一个解决办法,分享一下。
* 原因:
MTA(message transfer agent,默认装的是Exim) 在启动时会进行DNS lookups(DNS查找) 操作,而如果是拔号上网或是像我用Reijie的话,系统会尝试进行网络连接(即使是连接失败),这将会尝试很长一段时间,所以造成启动慢的问题. ( 这里有详细的解释: Exim 4 for Debian 中的 2.1.1.10. Keep number of DNS queries minimal (Dial-on-Demand) )
* 解决:
<pre>
1. 编辑文件: /etc/exim4/update-exim4.conf.conf , 找到 dc_minimaldns 字段,并设置为: dc_minimaldns='true';
2. 重新设置 exim. 运行:sudo dpkg-reconfigure exim4-config
到时选择 Yes 即可。
</pre>
如果用不到邮件路由,可以用sysv-rc-conf或者rcconf禁用掉exim服务即可
h3. Debian下的日文显示(文件名乱码问题)
一般来讲,尽量保证文件都是utf-8编码的,所以先确认系统编码是不是en_US.UTF-8
* 确认当前环境变量$LANG
<pre>
echo $LANG
</pre>
** 如果输出不是en_US.UTF-8
<pre>
vim ~/.bashrc 或者 vim /etc/profile
添加
export LANG=en_US.UTF-8
</pre>
*** 说明:
~/.bashrc 只对当前用户生效
/etc/profile 对所有用户有效
最后,从新登陆系统,echo $LANG,确认设置生效
** 如果从新登陆后$LANG又变回去了
<pre>
vim ~/.profile
这里面应该设置了
LANG=C
LANGUAGE=C
注释掉这两行
</pre>
* 如果编码为en_US.UTF-8,还是乱码,很可能是因为系统中没有日文字体库,安装之
<pre>
aptitude install ttf-vlgothic scim-anthy im-switch
</pre>
以上方法能保证系统显示的日文文件名没问题
并且以utf-8编码的文本文件中的日文不乱
但是,如果是以utf-8以外编码的文本文件,还是会乱(这和windows上的乱码是一样滴)
posted on 2012-01-18 21:45
大鸟 阅读(594)
评论(0) 编辑 收藏 所属分类:
linux