bokee.net

大学生博客

正文 更多文章

Linux 精选问题集

 

1 用*键快速进入目录 
  假设在/home目录下有/home/ftp,/home/httpd,/home/samba等子目录,
当前处在/home目录中,若想进入/home/httpd子目录,则只需用 cd ht*即可。
    --------------------------------------------------------------------------------
2 在consol下定义快捷键.
  例如, 可以将 F1 定义成 pbbs.)

 

具体方法如下:

修改~/.inputrc文件,然后加入这一行(定义F1为pbbs):
  "e[[A":"pbbs^M "
  `````这是ctrl+M
   --------------------------------------------------------------------------------
还有更好玩的东西, 大家有空多交流交流.呵呵.
3 处理文件名内含有特殊字符的文件 
  -rwxr-xr-x 1 root root 68710 Dec 8 15:36 gawk
  -rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk~
  /dosc/temp#
    --------------------------------------------------------------------------------
4 Linux 下有一个类似 dos 里的 pklite 和 lzexe 的命令--gzexe。 
而且压缩率一般都可以超过 50%,在空间紧张时很有用。比如:
  /dosc/temp# ls -al
  total 148
  -rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk
  /dosc/temp# gzexe gawk
  gawk: 54.5%
  /dosc/temp# ls -al
  total 216
  -rwxr-xr-x 1 root root 68710 Dec 8 15:36 gawk
  -rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk~
    --------------------------------------------------------------------------------
  /dosc/temp#
5 用当前路径作提示符 
  对 bash 来说,在 .bashrc 里加一行:
  PS1="$PWD$"
  对 tcsh 来说,在 .tcshrc 里加一行:
  set prompt="%/>"
  --------------------------------------------------------------------------------
6 一次处理一整个目录 Linux/UNIX 
的很多常用命令如rm,cp 等都有一个参数 -r,是递归的意思,命令里加了参数
 -r 就可以对目标目录及其下所有子目录进行操作,如:rm -rf/test(f是
 force 意为强行),该命令完全删除根目录下的子目录test,作用类似于dos
 下的deltree,当然使用这个命令时要特别小心。再如:cp -r/test/test1
 有类似dos下xcopy/s的作用。

--------------------------------------------------------------------------------
7 检查系统已启动的服务进程: 
  chkconfig --list
  --------------------------------------------------------------------------------
8 假如有紧急情况需要与网络断开,可采用以下方法: 
  1.拔掉网线 :)
  2.执行 ifconfig interface down
  如:ifconfig eth0 down
  (以后用ifconfig interface up让其生效)
  3.执行/etc/init.d/network stop
  (以后用/etc/init.d/network start恢复)
  --------------------------------------------------------------------------------
9 假设我们需要终止所有的csh进程, 
  平常我们是:
  1. ps -aux|grep csh
  假设得到:
  root 1345 1345 ……… /bin/csh
  root 2434 2434 ……… /bin/csh
  root 3678 3678 ……… grep csh
  2.执行kill命令:
  kill 1345 2434
  而如果我们使用fuser命令就可以执行:
  fuser -k /bin/csh
  也一样完成了以上的工作!

--------------------------------------------------------------------------------
10 在redhat中如何实现 启动时是否允许启动某项服务: 
  1、可以使用 linuxconf的图形化界面 来定义是否在系统启动时启动某项服务
  2、使用chkconfig命令 来定义在那个运行级别是否运行某个服务器进程 若你希望
在345运行界别下在启动时自动启动httpd服务器,则使用命令:
  chkconfig --level 345 httpd on
  若希望关闭该服务:
  chkconfig --level 345 httpd off
  --------------------------------------------------------------------------------
 
 
11 看看哪个进程占用的内存最大 
  ps -aux|sort +5n
  --------------------------------------------------------------------------------
 
 
12 使用自动补全功能 
  在linux中你键入任何命令或文件名是都可以用TAB键来自动补全。
例如,需要输入xf86config,你只要键入xf8,再按一下TAB键及可!

--------------------------------------------------------------------------------
13 快速进入某些目录 
  键入cd ~或cd可进入用户的home目录
  键入cd - 可进入上一个进入的目录

--------------------------------------------------------------------------------
14 LINUX调试(一)——路由器的配置与实现 
1、 网络拓扑

 


2、 IP分配
  CLIENT:192.168.2.2
  LINUX SERVER :
  Eth0:192.168.2.1
  Eth1:199.229.194.161
  CISCO2514:202.99.30.66(合法地址)
  SQUID SERVER:
  Eth0:199.229.194.20
  Eth0:1:202.99.30.67

3、 目的:
  通过LINUX SERVER上的路由配置,使得CLINET可以找到去SQUID SERVER的代理;
  然后,上INTERNET。

4、 LINUX SERVER上的配置:
  1)、相关命令:
  ifconfig route
  2)、网卡配置(LINUX SERVER):
  # ifconfig eth0 192.168.2.1 netmask 255.255.255.0
  # ifconfig eth1 199.229.194.161 netmask 255.255.255.0
  3)、配置路由:
  #route add –net 192.168.2.0/24 gw 192.168.2.1 dev eth0
  #route add –net 199.229.194.0/24 gw 199.229.194.0/24 dev eth1
  #route add default gw 199.229.194.161
  4)、设置启动
  把上面几行命令加到:/etc/rc.d/rc.local中。
  5)、简捷配置:
  可以完全不用以上配置,在setup中启动routed进程。

5、 SUQID SERVER上的配置:
  1)、相关命令:
  ficonfig route
  2)、网卡配置:
  # ifconfig eth0 199.229.194.20 netmask 255.255.255.0
  # ifconfig eth0:1 202.99.30.67 entmask 255.255.255.0
  3)、配置路由:
  # route add –net 192.168.2.0/24 gw 199.229.194.161 dev eth0
  # route add default gw 202.99.30.66
  4)、squid服务器配置:
  文件/etc/squid/squid.conf中端口号为81

6、 CLIENT端的配置
  添加代理服务器,指向199.229.194.20 端口是81(和DQUID SERVER中一致)。

7、 总结:
  到目前为止客户端应该可以通过SQUID 服务器上网了。技术上的前提条件为:
  1)、在/etc/sysconfig/network文件中必须有一项:FORWARD-IPV4=YES
  2)、在/proc/sys/net/ipv4中显示“1”。

 

--------------------------------------------------------------------------------
15 lynx中如何使用代理? 
可以在/etc/lynxrc(具体目录由编译时指定)加入
  http_proxy:http://代理服务器地址:端口/
  ftp_proxy:http://代理服务器地址:端口/

也可以在环境变量里配置:

如果是sh,bash,ksh,zsh在启动文件里加上
  ftp_proxy="http://代理服务器地址:端口/"
  gopher_proxy="http://代理服务器地址:端口/"
  http_proxy="http://代理服务器地址:端口/"
  export ftp_proxy gopher_proxy http_proxy
  如果是csh,tcsh则加上
  setenv ftp_proxy "http://代理服务器地址:端口/"
  setenv gopher_proxy "http://代理服务器地址:端口/"
  setenv http_proxy "http://代理服务器地址:端口/"
--------------------------------------------------------------------------------
16 LILO及引导软盘各种用法汇总 
作者:吴阿亭 [《中国Linux论坛》版主 ]

软件环境:  Redhat Linux 5.2
用法:
A. 从主引导记录中移走LILO并重存原先的windows MBR

1. c:\ > fdisk /mbr
2. #/sbin/lilo -u /dev/hda
3. #dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
4. #cat /boot/boot.0300  > /dev/hda

注意:只有你原先安装windows 95后再安装Linux时,
      /boot/boot.0300才是你原先的windows 95 MBR。

   B.  重存LILO到MBR

1. 用安装软盘或光盘启动到boot:

boot: vmlinuz  root=/dev/hdXY (如: hda1 )
启动完成后运行 #/sbin/lilo

2. 用两张软盘启动后:
#mount -t ext2 /dev/hda1 /mnt
#ln -s /mnt/boot boot
#ln -s /mnt/etc/lilo.conf  /etc/lilo.conf
#/mnt/sbin/lilo

   C. 拷贝LILO到软盘

1. /sbin/lilo -b /dev/fd0
2.用Redhat 安装盘引导到 boot:
boot: vmlinuz root=/dev/hdXY  (hdXY 为你的根分区)
update /etc/lilo.conf
   root=/dev/fd0
   boot=/dev/fd0
再运行:#/sbin/lilo -v

   D. 制作一张Redhat Linux 引导盘

 #mkbootdisk  --device  /dev/fd0  2.0.36-3

E. 拷贝内核至软盘,让软盘单独引导Linux并挂
   上硬盘上的根文件系统。
 
#fdformat /dev/fd0H1440
#dd if=/boot/vmlinuz of=/dev/fd0
#rdev /dev/fd0  /dev/hda1


 
18 查看启动时的log信息 
   首先去查看/etc/syslog.conf文件,找到对应的文件。
   (更详细的信息去看"man syslogd" "man syslog.conf" 以及"man klogd")
   通常在SlackWare下为/var/adm/messages,在Redhat下为/var/log/messages。
   这些文件可能会很大,要注意备份和删除。
   前面已经提到用tail(tail -f)查看这些文件的方法,另外还有个logscanner工具,挺不错的。
 
 
19 让grep搜寻文件及所有子目录下的文件里的内容 
   例如搜寻ZhXwin下所有C原代码中的"Chinput"(试试取消下行的-q参数):
   find /download/ZhXwin -name *.c -exec grep -q -s Chinput {} \; -print
   查找所有文件则可以用:
   find . -type f -exec grep -s chinese {} \; -print
   如果喜欢图形界面,KDE带的kfind很不错。

 
20  命令补起(TAB键的妙用) 
   很多shell都有这个功能。
   1) 只需输入文件或目录名的前几个字符, 然后按TAB
      键,如无相重的,完整的文件名立即自动在命令行
      出现;如有相重的,再按一下TAB键,系统会列出
      当前目录下所有以这几个字符开头的名字.例如
      cd /mnt/cd<tab键> 自动补起为 cd /mnt/cdrom
   2) 在命令行下,只需输入例如"m",再连续按两次TAB
      键,系统将列出所有以"m"开头的命令,(包括自定义
      的Bshell命令函数),对查找某些记不清楚的命令特
      有用.例如输入"ftp",将查到ftp,ftpcount,ftpwho
      ftpshut等本不熟悉的命令.

21 列出一个目录占用的空间 
   du或du -s或du -k
   du -S | sort -n 可以迅速发现那个目录是最大的。
   用df可以看到已安装的文件系统的空间大小及剩余空间大小。
   quota -v查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。
 
 
22 添加/删除用户 
   用useradd username(或者adduser username)添加一个名为username的用户,然后用passwd username
   指定口令。用户的信息记录在/etc/passwd文件里,由于每个用户都可以(而且必须能)读出这个文件然
   后就可以crack出其它用户的密码,为安全考虑现在都使用shadow。在/etc/passwd下用户的口令变为x
   真正的口令密文记录在/etc/shadow里,而这个文件只有以root权限才能读出。Redhat 5.1以下版本没
   有直接使用shadow,需要用pwconv转换一下,如果要变回来,可以用pwunconv。提示:在/etc/skel目
   录记录了一个用户应该有的基本文件(ls -a /etc/skel/看看都有什么),useradd会自动把这些文件复
   制到用户的家目录下并置上适当的权限(除非添加用户时用了-m参数: useradd -m xxx)。如果你在这个
   目录下键一个public_html的目录,则以后添加的用户在它的家目录下都会自动有个同名的目录,这样
   每个用户都有了“个人主页”。
   删除用户可以用userdel usrname或userdel -r username(有些发行版可能是deluser),-r参数会删除
   这个用户的家目录,但是在系统里别的地方还可能有此用户的信息,所以在删除用户之前最好还要
   用find / -user username等方式去找一找相关信息。
   如果要临时禁止一个用户,可以在/etc/passwd文件中此用户的密码这一项第一个字符前添加一个*号。
   如果把密码域改为空,则此用户不需要密码就可以进入系统,当你忘记root口令时,可以用软盘启动
   把原来的root安装上来,直接去改passwd文件。我记得以单用户方式启动时不需要密码可以进去。
   长用户名的问题,在Redhat发行版中已经做得很好了,也允许用户名中有空格。如果你手上的发行版
   不支持,到/usr/include/utmpbits.h里把UT_NAMEDSIZE改为32,重新编译相关程序。
   另一个直观的配置工具是linuxconf,比如用它来配置pppuser等等。
   这里只能给一些线索,自己多看"man useradd","man shadow","man group","man userdel"......
   再一次建议新来者多看书多思考多看看man page,否则不大容易找到/etc/skel是干什么的。
 
 
23 使用软盘/光盘等移动介质 
     刚从跺死/瘟都死转过来的朋友,手拿着软盘/光盘不知道该如何办,因为Linux下没有A盘D盘的
   概念.我自己刚开始学习Linux时也是这样(以前从来就没有做过root  :-)。如果你手头有讲Linux
   的书,仔细去看设备及文件系统的相关章节。简单地说,你需要把软盘/光盘设备上的文件系统安
   装到Linux目录树上的一个点上,称之为安装点(mount point),通常是一个目录。安装Linux后会
   有个缺省的安装点/mnt,在它下面还有/mnt/floppy和/mnt/cdrom。你可以用
       mount -t ext2 /dev/fd0 /mnt/floppy  <--把linux文件系统格式的软盘安装上来
       mount -t msdos /dev/fd0 /mnt/floppy <--把dos文件系统格式的软盘安装上来
       mount -t vfat /dev/fd0  /mnt/floppy <--vfat支持瘟95/98的长文件名
       mount /dev/hdb /mnt/cdrom  <--把以从盘方式接在第一个IDE口上的光驱上的光盘安装上来
       mount /dev/cdrom /mnt/cdrom  <-- /dev/cdrom是指向光驱设备的一个连接
       mount /mnt/cdrom    <--可以这么用是因为在/etc/fstab里已经定义了
       umount /mnt/floppy  <--在拿出软盘之前先要把它卸载
       umount /mnt/cdrom   <--不卸载就拿不出光盘
   当然你也可以自己建一些安装点,比如"mkdir /mnt/smb","mkdir /scd"然后
       mount -t iso9660 /dev/scd0 /scd  <--/dev/scd0: SCSI光驱
       smbmount //fjj/download /mnt/smb
   等等,熟悉之后就可以灵活运用。
   单用mount而不跟任何参数可以显示已经安装的文件系统,或者查看/etc/mtab文件
   初学者还经常问到如何格式化磁盘,在Linux里概念有些不同,称之为制作文件系统(make filesystem)
   应该用mkfs命令,由于现在的Linux都使用ext2格式,最好直接使用mke2fs,比如mke2fs /dev/fd0
   mke2fs /dev/hdb2等等。如果要对软盘低级格式化,则可以用fdformat,而硬盘在出厂时已经格式化,
   无须低级格式化(那是危险的)。检查文件系统则用e2fsck,如e2fsck -av /dev/fd0。
   哈,这个根本算不上Tips,不过有些初学者总是不喜欢看书思考,甚至还问如何添加/删除用户。
 
 
24 查找Xwindow下的字体信息,特别是字符映射表(内码) 
   xlsfonts 列出所有字体
   xfontsel 分类列出所有字体并显示示范文本
   xfd 显示某个字体文件中的所有字符及内码,比如用 xfd -fn hanzigb16fs 看看中文内码
   再用xfd -fn cclib16st看看cxterm所用字库的内码与XF86的不同(注意最高位)。      
 
 
25 快速查找某个程序运行中的PID号/关机 
   例如想查找inetd: ps aux | grep inetd
   又如想找到最吃内存的进程: ps aux | sort +4n
   找到进程的PID之后就可以用kill给它发信号,或者强制杀死它如:kill -9 xxx(某个进程的PID)
   在Linux下还提供了一个killall,可以直接使用进程的名字而不是PID号,如killall -HUP inetd
   又如killall xdm。killall会把信号发给以指定名字的程序运行的所有进程。
   用killall -l列出所有可用的信号。
   提到ps忍不住给大家介绍一下qps,用qt写的图形界面,综合了free,top,ps及kill的特点,还可以看到
   进程的Socket/Memory Map/Files信息。还有为KDE写的ktop,优点是列出了父子进程的关系。
   shutdown -r now 杀掉所有进程立即重新启动
   shutdown -h now 杀掉所有进程立即停机
   shutdown -h +5 "Warning: After 5 minutes I’ll shutdown" 给用户发消息并在5分钟后停机。
   相关命令有reboot,halt,poweroff,init等。
   要想实现软件关掉电源,则你的PC机必须是ATX结构的,然后去配置编译内核,打开
   charactor device/Advanced Power Management support/Power off on shutdown这一项。      

26 拷贝与粘贴文本 
   如果启动了gpm这个守护神(deamon)程序的话,可以用鼠标左键来选择文本,然后就可以用鼠标
   中键把它粘贴到你所想要的地方。如果是两键鼠标则在配置是要选择防真3键鼠标,之后同时按
   下左右键模拟中键。在文本终端下应该用鼠标右键来粘贴。
 
 
27 快速展开xxx.tar.gz/xxx.tgz压缩的包 
   tar zvfx xxx.tgz 在当前目录下展开这个包
   tar zvft xxx.tgz 只测试不展开
   tar zvfx xxx.tgz -C /new-dir 展开后放到/new-dir目录下
   tar zvfc test.tgz /test 把/test目录下所有的文件及子目录打包成test.tgz
   tar的参数很多,要仔细学习。      

28 关于rpm的小技巧 
   1)安装rpm包时显示进度
     用-vh参数,如rpm -ivh ipchains-1.3.6-1.i386.rpm
     如果用glint或xrpm则不必。
   2)直接通过ftp来安装rpm包
     如rpm -i ftp://ftp.xxx.xxx
   3)校验所有的rpm包,查找丢失的文件
     rpm -Va
   4)查找一个文件属于哪个rpm包
     例如:rpm -qf /usr/bin/who
   5)列出一个rpm包的描述信息
     例如:rpm -qpi mon-0.37j-1.i386.rpm
   6)列出一个rpm包的文件信息
     例如:rpm -qpl mon-0.37j-1.i386.rpm
 
 
29 将man/info的内容存为文本文件 
   以man tcsh为例:
   1) man tcsh | col -b > tcsh.txt
   2) nroff -man tcsh.man | col -b > tcsh.txt
   以info emacs为例
   info emacs -o emacs.txt -s
   提示,如果安装了KDE的话用kdehelp去看man page和info page是很方便的。
   嫌KDE太大的话还有TkMan可以选择,也是图形/超文本方式的,有搜索引擎,功能更强。
   新来者要多去看man和info哟!      

 
30 将man/info的内容存为文本文件 
   以man tcsh为例:
   1) man tcsh | col -b > tcsh.txt
   2) nroff -man tcsh.man | col -b > tcsh.txt
   以info emacs为例
   info emacs -o emacs.txt -s
   提示,如果安装了KDE的话用kdehelp去看man page和info page是很方便的。
   嫌KDE太大的话还有TkMan可以选择,也是图形/超文本方式的,有搜索引擎,功能更强。
   新来者要多去看man和info哟!

31 使用nohup命令(不挂起) 
   如果你想进程在你退出系统后还能执行,可以使用NOHUP命令如:
     % nohup tar -cf /dev/tape /home &
   你logout退出后再重新登录的话,使用’ps’命令可以看到进程还在执行
   注意,要想把命令真正放到后台运行,nohup必须与&操作同时使用。
   有些软件自己能处理SIGHUP信号,如wget,则对它们无须用nohup。
   如果你愿开动脑筋的话,还可以用nohup来实现ppp回拨:先拨号上去,然后以nohup执行一个自制的
   脚本,如"sleep 60; ppp-start-script"等等。最后logout退出并挂断电话等着就是。
 
33 启动一个程序时让它立即进入后台运行方式 
   看过前面一篇bash的介绍应该明白Ctrl+z/bg/fg的用法。有些程序工作起来挺费时间,在它后面加
   个&符号看看,例如"updatedb &","netscape &"等等。这样这个shell会释放出来干别的活。注意
   这样出来的程序父进程仍然是这个shell,若你退出这个shell,这些程序也会被kill掉。建议退出shell
   之前用jobs命令查看后台作业。

34 改变xterm/cxterm下字体大小 
   同时按下Ctrl键和鼠标右键会弹出一个菜单让你选择,也可以在启动xterm时指定字体,
   如"xterm -fn 8x16 &"
   提示:难道你不想试试Ctrl+鼠标左键会有什么吗?!     
 
 
35 利用Find命令改变所有权 
   想要改变当前目录下所有文件的所有权,可以这样:
     find . -exec chown OWNER.[GROUP] {} \; (Solaris)
     find . -exec chown -R OWNER.[GROUP] {} \; (Linux)


36 取消^M字符 
   当你FTP一些DOS文件到unix下时,你经常会看见每行文件后面有个讨厌的^M 字符,
   有两个简单的方法可以取消它。
   用"vi"打开此文件,在Command mode下敲入:
     :%s/^V^M//g
   或者,在UNIX SHELL下敲入:
     sed ’s/^V^M//g’ foo > foo.new    

37 查看文件内容的特殊方法 
   相信最基本的cat和less你已经很熟悉了,如果有特殊的要求呢:
   如果你只想看文件的前5行,可以使用head命令,如:
     head -5 /etc/passwd
   如果你想查看文件的后10行,可以使用tail命令,如:
     tail -10 /etc/passwd
     tail -f /var/log/messages
          参数-f使tail不停地去读最新的内容,这样有实时监视的效果,
          当你在ppp拨号的过程中用它岂不是很方便!
   查看文件中间一段,你可以使用sed命令 如:
     sed -n ’5,10p’ /etc/passwd
   这样你就可以只查看文件的第5行到第10行。

38 如何让Linux帐号搬家 
温州市电信局 麻奉关 mafg@
   有时需要让Linux帐号搬家,其方法如下:
   1、保证将要加入系统的新帐号放在新的位置上,这通过修改/etc/default/useradd文件中的HOME 值来实现。
   如:HOME=/home2 使新增帐号的主目录建在/home2下。
  
   2、将已有帐号移至新的位置。这可按如下步骤实实施:
   首先,将已有帐号的主目录连带目录属性拷至新位置,可用下面命令:
   cp -a /home /home2
   或
   cp -rpd /home /home2
   然后,修改/etc/passwd文件中相应记录的home_directory域为/home2/username。
   这样两步已将旧帐号移至新位置。确保无误后,可删去旧帐号的旧主目录,以腾出原文件系统的空间。
 
 
39 如何打印man文档: 
Fred <longma@>
   man是unix(包括linux)下的在线说明文档,为了方便阅览,很多人想把它打印下来,
  但是如果直接将man输出到文件再打印,会发现很多乱码,这是由man文档存在的很多不可见的格式控制符造成的.
  为了产生正确的打印结果,需要对man文档进行处理,使用如下命令(以打印ls说明为例):
  man ls | col -b > ls.txt
  就可以产生可正确打印的文本文件.

 
40 关于在linux下磁盘定额的实现 

1. 问题的提出:

   能够限制用户在服务器上使用一定的硬盘空间,是作为公用服务器所必须的。
在这方面linux 比Windows NT有明显的优势。

2. 需求说明:

   需建FTP服务器,在系统中有多个用户, 需如下分配磁盘定额:


 user name group  home_dir  定额
 ----------------------------------------------------------
 co_user01 company01 /home/company  60M
 co_user02 company01 /home/company
 -----------------------------------------------------------
 user01  user01  /home/user01  30M
 -----------------------------------------------------------
 user02  user02  /home/user02  30M
 -----------------------------------------------------------
 user03  user03  /home/user03  30M

3. 解决步骤:

 a. 我们使用系统为Red hat 5.2 , 用户已按上述需求设好帐号。
 b. 由于使用了Redhat5.2 ,系统内核缺省情况是支持磁盘定额的,而且
    启动脚本启动磁盘定额服务。(在/etc/rc.d/rc.sysinit中,你可以
    看到在安装完所有分区后,有quotaon -a 及quotacheck -avug的设置。)

        c. 现在(1999/04/10)linux的磁盘定额只支持ext2分区。这时,我们要
    指定系统中哪一个分区要做定额设置。你可编辑/etc/fstab文件来指定,
  原文件:
  /dev/hda3  /  ext2  defaults 1 1
  /dev/hda1  /winnt  vfat  defaults 0 0
  /dev/hda2  /my_ntfs ntfs  defaults 0 0
  /dev/hda4  swap  swap  defaults 0 0
  /dev/fd0  /mnt/floppy ext2  noauto  0 0
  /dev/cdrom  /mnt/cdrom iso9660  noauto,ro 0 0
  none   /proc  proc  defaults 0 0

  改为
  /dev/hda3  /  ext2  defaults,usrquota, grpquota 1 1
  /dev/hda1  /winnt  vfat  defaults 0 0
  /dev/hda2  /my_ntfs ntfs  defaults 0 0
  /dev/hda4  swap  swap  defaults 0 0
  /dev/fd0  /mnt/floppy ext2  noauto  0 0
  /dev/cdrom  /mnt/cdrom iso9660 noauto,ro 0 0
  none   /proc  proc  defaults 0 0

   *** 千万不要把usrquota写成userquota, 后果并不是想象的那么简单。

 d.
在指定的要做定额的分区的根目录中建立空文件er及quota.group并把权限指定为

    只有root可更改。

  # touch er
  # touch quota.group
  # chmod 600 er
  # chmod 600 quota.group

 e. 这时,我们重新启动系统

  # reboot
 f.
在系统重新启动后,我们就可以用edquota命令或linuxconf软件为用户来划分磁盘定额了。

    用linuxconf比较容易。... ...


 g. 这样全部设置就告完成,使用repquota -a 命令看看。


 参考资料 /~linux/doc/CLDP/mini/Quota.html

 wangwei
 mailto: wangwei@

 
 
41 怎样改变文件的模式和权限怎样改变文件的模式和权限? 
        使用chmod这个命令,它是“Change
      mode”的缩写。这个命令能让你轻松地改变拥有的任何文件的模式,以便让你授权的人能读、
      修改或执行这个文件。这里有三个基本级别的用户,即:文件拥有者(user),拥有者所在组
      (group)和其他人(other)。同时也有三个级别的权限:读(read),
      ,写(write)和执行(execute)。用户类型可略写为:“u”代表用户,“g”表示拥有者所
      在的组,“o”为所有其他的用户,“a”表示任何人。而权限也同样缩写为:“r”表示读,
      “w”表示写,而“x”表示可执行。因此,要改变文件harold.cat的权限以允许组外用户可读,
      可键入:
        chmod o+r harold.cat
        chmod命令可允许你同时改变多个文件。因此,可以很轻松地去掉允许任何人对.cat文件写
      的权限,和去掉组外用户的所有权限:
        chmod a-w,o-rx*.cat

       
      more命令能干什么?
        more命令能让用户在读文件时每次看一页,可以通过用/regexp搜索规则表达式来跳过文件
      的前面部分,但却不可向后搜索。还有其他更为灵活的页面程序。因此,如果发现more命令的
      局限性使用起来不方便,可要求系统管理员在你的系统中增加一个less的拷贝。这个小程序能
      让你向前或向后浏览文件,并且比more更称手。也可使用vi的只读模式view来作为一种替代的
      方式。

 
 
44 当终端出现混乱时,如何让它恢复正常? 
        当使用stty命令而出现一些混乱或者更糟的是,使用一个程序而使终端设置完全混乱了
      时怎么办?要回到“现实”,试试下面的命令:
        stty sane
        如果击键变得混乱时,试着用<CTRL+j>来把命令括起来,输入<CTRL+j>的顺序是先按下
      CTRL再键入j键。
        <ctrl+j>ctty sane <ctrl+j>
        这个命令不会回到先前的设置,但却可以去除一些稀奇古怪的设置。而真正会出现什么
      设置要依赖于所使用的系统,但它至少会让你能输入字符,并见到结果。从这里开始,你可
      以把一些组合键设置为你所喜欢的方式。

45 怎样压缩一个文件? 
        用compress。对于那些确实需要却并不经常使用的文件,可以把它们进行压缩,
      从而省出“成吨”的磁盘空间来。当要使用它们时,可以用uncompress选项。
      压缩后的文件名以.z结尾,占用更少的空间,但这也和文件类型有关。例如,
      TIFF图像文件能压缩压到原文的5%,每日的数据库输出能压缩到原始大小的25%。
      对于其他文件,压缩数量变化范围很大。文本文件较好,程序很难压缩。要压缩
      一个或多个文件,用compress
      filenames。要解压一个文件,用uncompress filenames或compress -d
      filenames,两者结果完全一样。要解压的文件都以.z结尾,因此不必把它加到命令行中去
 
 
46 ping能干些什么? 
        它能告诉你现在哪些机器可用。ping可能是最基本的UNIX网络命令,它仅仅向你提供地
      址发送一个小包,然后侦听这台机器是否有“回答”。你可使用机器的Internet地址,
      如192.78.222.81,或者也可使用机器名:
        ping rcil
        该名字可以是局部的主机(host)文件中的名字或由网络名字服务器解析的名字,
      但在任何情况下都应是网络可以用来找出特定机器的名称。如果机器对ping没有响应,
      它也不会对其他什么有反应,因为在网络上“看”不见它。在这种情况下,除非问题非
      常简单和明显,诸如机器被别人关掉了等,否则,去问问系统程序管理员。不管在哪种
      情况下都要涉及到系统管理员,因为重启UNIX系统并不像DOS机器一样简单。
 
47 使用超过64M的RAM 
问: 目前小弟有128MB的RAM, 但是用Linux开机后用free查看,
皆只能用到64MB。 而有人有96MB甚至128MB的RAM,不晓得要
如何作才能突破64MB?

答:

   add a line in your /etc/lilo.conf
   append = "mem=96M"

   执行setup後, reconfigure...到了lilo的设定时,选第一项
     Begine...加上mem=96M, 或者进入/etc/修改lilo.conf
     Append="mem=96M"即可!

48 使tty为256个 

由於新版的 kernel 已经支援到 256 ptys, 所以我们暂时不必
对 kernel 对修改。  但其他的修改是有必要的。

  * /dev/ptyXX、/dev/ttyXX 的增加
    因为新的 pty、tty 的 major、minor 已重新做了安排,
    我们必需使用 mknod 去增加新的 ptys, 当然旧的要先
    砍掉才是。

  * pty’s new major number: 2

  * tty’s new major number: 3

  * they are character special devices.

  * minor number 都是从 0 到 255

    这儿有一份 shell script, 可以去达到我们要的目的。

=========[mknewptys]============================================
#!/bin/bash

if [ `echo $0|cut -c1-2` = ’./’ ]; then
  progname=`echo $0|cut -c3-`
else
  progname=$0
fi

makedev () {
        # usage: makedev name [bcu] major minor owner:group mode
        rm -f $1
        mknod $1 $2 $3 $4 &&
        chown $5 $1 &&
        chmod $6 $1
}

usage () {
   echo
   echo "Usage : $progname "
   echo
   echo "eg: (please refer to your include/linux/major.h)"
   echo
   echo " $progname 2   #make ptyXX for pty_master major=2"
   echo " $progname 49  #make ptyXX for pty_master major=49"
   echo
   exit 0
}

if [ -z "$1" ]  ; then
   usage
fi

if [ $[$1+0] != "$1" ] ; then
        usage
    else
        major=$1
fi

echo Creating ptyp0 / ttyp0  to  ptyEf / ttyEf
minor=0
major_slave=`expr $major + 1`
while [ $minor -le 255 ] ; do
  p1=`expr $minor / 16 + 1`
  p2=`expr $minor % 16 + 1`
  newname=`echo pqrstuvwxyzabcde |cut -c$p1``echo 0123456789abcdef| cut -c$p2`
  echo -n mknod pty$newname / tty$newname
  makedev /dev/pty$newname c $major $minor root:root 666
  makedev /dev/tty$newname c $major_slave $minor root:root 666
  minor=`expr $minor + 1`
  echo
done

echo "done."
exit 0

=======================================================================

    这个 script 的执行方式很简单, 就打 mknewptys 2 就可以了。
    这个 script 在 procps-0.99a.tar.gz 中也有附一份。

  * 把 telnetd 及 rlogind 也换成新的, 支援 256 ptys 的版本。
    请到 ftp 站抓取。

  * 有些程式可能也要注意一下, 例如 crxvt (xcin) 这类 X terminal
    的程式原来也只会开 ptyp0 ~ ptyzf, 而不会去开 ptya0 ~ ptyef,
    所以原程式要修改。


49 如何用文件做一个filesystem? 
答:

    我试图将一个普通档案 mount 成 filesystem 。我看了 man mount 及
    man losetup 。於是我照了上面所说的步骤来做,结果如下:

    man losetup 说,我可以:
              dd if=/dev/zero of=/file bs=1k count=100
              losetup -e des /dev/loop0 /file
              Password:
              Init (up to 16 hex digits):
              mkfs -t ext2 /dev/loop0 100
              mount -t ext2 /dev/loop0 /mnt
               ...             
              umount /dev/loop0
              losetup -d /dev/loop0

    我照做了,结果却是:
              dd if=/dev/zero of=/file bs=1k count=100
              losetup -e des /dev/loop0 xx
              Password:
              Init (up to 16 hex digits):
              ioctl: LOOP_SET_STATUS: Invalid argument

    看样子,似乎是我的 kernel 少了些什麽东东 (ps 我的 kernel 中已将
    loopback device 做成 module 了) 。我想请问的是, losetup
    的 -e option 中, des 及 xor 到底是什麽意思? 而在使用 -e des
    时, losetup 又问我 Init: ,那又是什麽意思?

    以上的办法不成,所以我只好这样试:
              dd if=/dev/zero of=/file bs=1k count=100
              losetup /dev/loop0 xx          ===> 似乎成功了
              mkfs -t ext2 /dev/loop0 100
              mount -t ext2 /dev/loop0 /mnt
    结果就 mount 成功了。


 
 
50 让你的硬盘飞起来: 
Linux下也可以使用32Bit I/O和DMA。使用/sbin/hdparm -c1
/dev/hda(hdb,hdc..)打开32Bit传输模式,使用命令
/sbin/hdparm -d1 /dev/hda(hdb,hdc...) 打开DMA。最后使
用/sbin/hdparm -k1 /dev/hda 以使硬盘在Reset之后保持上
面的设定,这么一来,硬盘读写速度应该可以提高一倍以上。

51 微调你的Ext2: 
Linux下的命令tune2fs可以设定最大Mount次数(因为Linux即时
在mounted clean状况下,达到一定的mount次数后,会强制
e2fsck对于我这样的每天开关机的来说很不方便),tune2fs
命令的其他用途请参见man。

 
52 禁止在Netscape中显示闪烁(Blink)Tag: ~/.Xdefaults 
中修改 Netscape*blinkingEnabled: False 之后运行
xrdb -Load ~/.Xdefaults


53 随时改变XTerm的字体大小:shift加+/- 
Ext2的文件属性: lsattr列出属性,chattr可以改变属性。
如 chattr +A filename 则系统不会修改其last access
time属性;chattr +i 则可以避免被rm掉。
 
 
54 你大概已经习惯了使用Top来观察系统使用情况, 
那就使一使使用Vmstat 1来看看cpu的空闲程度(显示结果的
最后一项)。 使用Watch命令,反复执行特定命令,如"watch
ls -l /tmp/blah",将一直观察文件的大小改变。
使用pppstats得到ppp连接的数据。

 
55 显示远程机器的NFS: 
showmount -e hostname 使用autofs免去你每次mount和umount
之苦,再RedHat6.0中带了autofs的rpm,只要安装好之后便可以
享受自动加载文件系统的方便。 在/misc目录下,创建一个cd
目录,如果使用其自带的auto.misc和auto.master的话,马上
就可以实现自动加载功能了。

 
 
56 在Bash Shell中,可以用! 
重复上几次输入过的命令,这样就可以省去往上滚动的麻烦了。
使用ctl+R可以互动的检索以前使用过的命令行。

 
57 使用cd -在上两个cd /directory/操作中切换。 
如先是cd /home/foo接着是 cd /home/maison则接着打cd -
 会进入 /home/foo再打cd - 会进入 /home/maison。


58 Bash中的快捷键: 
ESCAPE-B 会向前条一个单词,Ctrl-K会删除从光标到行末所有字符。
 
 
59 在PS命令中使用grep, 
例:ps auxw | grep gpm 会列出所有含有gpm字符的进程。

60 在同一个命令行上同时执行多条命令: 
用分号分隔。如编译一个源文件:type ./configure ;
make ; make install 。之后你就可以去散步了(不要
在电脑前花费了太多时间了,生活中还有很多美好的东西。)
 
 
61 建立符号连结, 
这大概是最有用的功能了,ln -s real-file symbolic-file,
无论是设备,文档还是脚本程序。

 
 
62 改变显示的单位, 
如du -hm 将以M为单位输出结果,同样的du -hk则以K为单位输出。


63 自动Logoff, 
在~/.bashrc中加入这么一句话:TMOUT=300则会在5分钟之后logoff,
不过如果less这类程序运行则不会启动。

 
 
64 在使用less 或 more时,直接启动编辑器: 
在less中打入v键,会立即启动vi或其他你在环境变量
中指明的编辑器,但是more只能使用vi。

 
65 针对Redhat发布中使用netcfg接入internet而不愿打开图形界面的, 
通常的方法是在图形界面下要点击ACTIVE接入,而且只能点击DEACTIVE断开,
下面的方法也许更简单一点:
假设你是用netcfg来建立ppp0的,只需在/etc/bashrc文件中添加以下两行内容就可以了

alias dial="/etc/sysconfig/network-scripts/ifup-ppp
/etc/sysconfig/network-scripts/ifcfg-ppp0"

alias hangup="/etc/sysconfig/network-scripts/ifdown-ppp
/etc/sysconfig/network-scripts/ifcfg-ppp0"

Now if you want to connect, all you need to do is to go to your terminal
and type dial; if you would like to disconnect just type hangup.
 现在如果你想连入internet时只需在终端界面上键入dial;而断开命令就是hangup.

 
66 bash下的酷招 
假设你要创建一个 test的目录

你错误的输入了:

# mkdri

在这里要注意的是创建目录的命令是mkdir,而不是mkdri。
要修正这个命令的方法除了按backspace键之外,就是在命
令行中同时按Ctrl+t,就会将光标前面的字符交换了。

 
67 bash的技巧. 
转换当前的目录时的轻松方法,即使那个目录有200个字符长度,
假设要进入的目录是 what_is_wrong_with_this_directory.

# cd what

现在按TAB键,shell会在当前目录下自动匹配以what开头的目录。

注意:当按下一次TAB键没有任何反应时,是因为当前目录下还有
其他的目录是以你输入的内容作为开头,shell就不能确定了,
再按一次TAB键,shell将会列出匹配的所有目录

 
68 自己来指定目录的颜色 
大多数的人都知道ls --color这个命令可以显示出带有系统默认颜色
的目录。但如何改变目录的颜色呢,其实只需在/etc/bashrc文件中
添加下面的一行

eval `dircolors /etc/DIR_COLORS`

系统就会按/etc/DIR_COLORS的定义来显示目录的颜色。

 
 
69 window不动了怎么办? 
Xwindow 有时可能会不响应了,(我不想说死机,其实这时系统绝对没有崩溃,
只是Xwindow不反应了),有两个办法来杀死X server,
其一就是用Ctrl+Alt+Backspace组合键。

其二就稍嫌复杂了,但一般而言,多数情况下会更顺手一点,先按Ctrl+Alt+F2
切换到另一操作台,然后登录到系统,然后

# ps -ax | grep startx

This will give you the PID of your Xserver. Then just kill it with:
这会列出你Xserver的PID,只需如下操作就能杀死Xserver

# kill -9 PID_Number

通过按Alt-F1组合键返回原来的平台。

 
 
70 用FIPS为LINUX分区 ( September 02, 1999 ) 
 


  LINUX是目前最热门的东西,相信许多朋友都在准备着装一个。
在各种媒介上也都有许多关于LINUX的文章,网上更是随处可见。但
是奇怪的是都没有提到用FIPS这个分区工具?真是很奇怪啊!

  那么FIPS是什么东西来的呢?其实你打开LINUX光盘找一找,
它就在光盘根目录的dos-stuff目录下或dos-stuff\fips目录下
了。好了,找到了吧?那么我们就具体谈谈它的使用吧!

  FIPS (First Interactive Partition Splitter) 程序是
一个功能非常强大的MS-DOS工具程序,它可以在不删除硬盘上原
有数据的情况下将硬盘上的一个分区分割重新分区。不过该程序
只能分割MS-DOS的主分区(如果你的主分区不够大的话就算了吧),
不能分割MS-DOS的扩展分区。下面是它的详细使用说明:

  1、假设你的全部硬盘都已分配给DOS/Windows使用. 请您
建立一张DOS启动盘,将CDROM上的/install/FIPS目录下的
RESTORRB.EXE(恢复分区用),FIPS.EXE 和ERRORS.TXT拷贝
到该软盘上,不要直接在硬盘上使用FIPS。否则后果自负!

  2、先使用MS-DOS或Windows 95提供的SCANDISK
(或Norton公司最新版本的NDD)来检查要划分的硬盘,
修复错误,然后使用DEFRAG.EXE(或Norton公司最新版本
的Speedisk,如果装了WIN95、98系统的就请用WIN95、98
的磁盘碎片整理程序)来将硬盘。以保证硬盘的后半部分没
有任何MS-DOS文件,注意像mirror或image这样的程序会
重新把一些文件放在硬盘的最后面,请用
“attrib -r -s -h image.idx”或 “attrib -r -s -h mirorsav.fil”
将这些文件的属性改为可读并删除他们,另外在autoexec.bat或config.sys
中除去image或者mirror及其他防病毒程序如NAV,防止他们在FIPS重新启动机
器时恢复原来的硬盘分区表。此外如果要用FIPS分割被doublespace,stacker,
 drivespace压缩的磁盘时只能分割压缩盘的宿主盘。做完这了这些准备工作之
后,我们就开始分区吧。

  3、用做好的FIPS启动盘启动机器。运行FIPS, 当用户启动
FIPS 的时候, 程序可以让用户把硬盘上boot区及root区的备
份写到软盘上的ROOTBOOT.00x (其中的 x 代表一个从0到9 的数字)
文件里。如果在使用 FIPS 时发生任何错误,你就可以从软盘启动并执
行RESTORRB 来恢复硬盘上原先的配置。 请注意: 如果你不止一次地
使用 FIPS 的话(这一般是不必要的,但是可能发生),程序会把一个
以上的 ROOTBOOT 档案写到软盘上。RESTORRB会让用户选择要恢复哪个
配置文件。RESTORRB.000 这个文件包含用户原先的配置。正确选择
0、1或2(视用了多少次而定,最后一次使用的数字最大)就可以即刻恢
复分区前的状态,是不是很方便!^_^

  现在你必须输入新分区应该从哪个磁柱开始。使用左/右方向键来
递增或递减磁柱的计数。不要急,看清楚了再按ENTER。剩下的分区以
及新分区的大小会在程序中显示,选择正确的磁柱对你来说并不困难。
每使用上/下方向键一次会递增十个磁柱。准备好后,按下enter继续。
在此之后,可以选择重新编辑分区表(这会让用户重新选择划分分区)
或是继续。如果用户键入“c”,则FIPS将会计算改变过的启动分区,
再检查一次并提示用户是否要继续。如果用户键入“y” ,那么FIPS
将会把这些改变写入硬盘并结束。重新启动机器,用FDISK查看新配置
是否已经起作用。现在,您的系统上应该有两个FAT分区,第一个是您的
DOS/Windows的文件系统,第二个是个空的分区,可以被TurboLinux作
为自己的分区。

  最后把这张启动盘保管好,以后一旦需要恢复你硬盘的分区,软盘
启动并执行RESTORRB。你的硬盘就如同从未分过这一个区一样了!怎么
样,的确很方便吧,还不快行动,把LINUX请进你的硬盘里去!

 
 
71 Linux/UNIX命令 dd 简介 
 
        dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定
        大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

   dd 的主要选项:
       指定数字的地方若以下列字符结尾乘以相应的数字:
       b=512, c=1, k=1024, w=2, xm=number m

       if=file
       输入文件名,缺省为标准输入。

       of=file
       输出文件名,缺省为标准输出。

       ibs=bytes
       一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。

       obs=bytes
       一次写 bytes 个字节(即一个块大小为 bytes 个字节)。

       bs=bytes
       同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。

       cbs=bytes
       一次转换 bytes 个字节,即转换缓冲区大小。

       skip=blocks
       从输入文件开头跳过 blocks 个块后再开始复制。

       seek=blocks
       从输出文件开头跳过 blocks 个块后再开始复制。(通常只
       有当输出文件是磁盘或磁带时才有效)

       count=blocks
       仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。

       conv=conversion[,conversion...]
       用指定的参数转换文件。
      
   转换参数:

       ascii  转换 EBCDIC 为 ASCII。

       ebcdic 转换 ASCII 为 EBCDIC。

       ibm    转换 ASCII 为 alternate EBCDIC.

       block  把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

       unblock
                 使每一行的长度都为 cbs ,不足部分用空格填充。      

       lcase  把大写字符转换为小写字符。

       ucase  把小写字符转换为大写字符。

       swab   交换输入的每对字节。  Unlike  the
       Unix  dd, this  works when an odd number of
       bytes are read.  If the input file  contains
       an  odd  number  of  bytes, the last byte is
       simply copied (since  there  is  nothing  to
       swap it with).

       noerror
       出错时不停止。

       notrunc
       不截短输出文件。

       sync   把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

        由于 dd 命令允许二进制方式读写,所以特别适合在原始物理设备
上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。
再如把第一个硬盘的前 512 个字节存为一个文件:
dd if=/dev/hda of=disk.mbr bs=512 count=1

 
 
72 ls 命令选项详解 
作者: con
 
        ls 命令可以说是Linux下最常用的命令之一。它有众多的选项,
其中有很多是很有用的,你是否熟悉呢?下面列出了 ls 命令的绝大多数选项。

 


-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
      文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
      接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
--color=no 不显示彩色文件名
--help 在标准输出上显示帮助信息。
--version 在标准输出上输出版本信息并退出。

来自。

分享到:

上一篇:如何降低Linux 内存开销

下一篇: