linux常见问题2

来源:互联网 发布:php检查key是否存在 编辑:程序博客网 时间:2024/05/17 08:50
linux常见问题2(转贴)

By 人生百味 发表于 2006-11-7 12:26:00

login  如何设置login前欢迎界面
login  ====================================
login  修改/etc/issue或者issue.net,往里面写入文本,就能使得用户在login前得到相应的提示,这将有助于用户分辨自己正在连接哪里的主机。
login  issue的内容是出现在本机登录的用户界面上,而issue.net则是在用户通过网络telnet的时候出现。

bash  如何在bash下快速执行某个特定历史命令
bash  ====================================
bash  在bash下面按ctrl+r可以查找历史命令中匹配的命令并执行

如何查看进程继承关系
====================================
直接在命令行中输入
pstree
即可,程序会以树状结构方式列出系统中正在运行的各进程之间的继承关系。

ps  如何找出内存占用最大的进程
====================================
除了可以使用top命令查看内存使用情况之外,还可以使用更快的命令行命令,相关的命令如下:
ps aux | sort +4n
或者
ps aux | sort +5n

如何在Linux下面编辑二进制文件
====================================
到http://freshmeat.net/redir/hexedit/4088/url_tgz/hexedit-1.2.3.src.tgz下载hexedit安装到系统上,就能用hexedit filename来编辑二进制文件。

如何设置用户密码过期时间
====================================
设置某个用户的密码过期时间可以用usermod -e来设置,如果要统一设置用户的密码过期时间,那么就要修改/etc/login.defs里面的PASS_MAX_DAYS,比如修改所有用户的密码过期时间是30天:
PASS_MAX_DAYS 30
如果这个值是99999,那么表示密码永不过期。

MAC  如何修改网卡MAC地址
====================================
首先必须关闭网卡设备,否则会报告系统忙,无法更改。
命令是: /sbin/ifconfig eth0 down
修改 MAC 地址,这一步较 Windows 中的修改要简单。
命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
重新启用网卡 /sbin/ifconfig eth0 up
网卡的 MAC 地址更改就完成了

bash  如何用Bash纠正错误命令
====================================
当你输入一个命令不知道是否正确的时候,可以使用ctrl+t来纠正到正确的命令。
比如输入mkdri,然后按ctrl+t,bash会帮你纠正到最接近的命令mkdir。

login  如何使非root用户都不能远程登录
====================================
建立/etc/nologin文件,这样所有的非root用户都不能远程登录。

mesg  如何不显示其他用户的消息
====================================
用户可以使用mesg n来禁止别人给他发送信息,其实就是禁止别人往自己的终端上面的写权限。当别人试图再使用write给他发送信息时,发送者将会看见提示:
mesg  write: user has messages disabled on pts/n

如何知道某个命令使用了什么库文件
====================================
例如要知道ls使用了什么库文件,可以使用:
$ ldd /bin/ls

swap  如何临时增加交换空间
swap  ====================================
swap  产生一个64M的空文件
swap  #dd if=/dev/zero of=/swapfile bs=1024 count=65536

swap  初始化该文件为交换文件:
swap  mkswap /swapfile 65536
swap  sync

swap  激活这个交换文件:
swap  swapon /swapfile

nohup  如何使一个用户进程在用户退出系统后仍然运行
====================================
使用nohup command &,比如:
nohup wget -c ftp://test.com/test.iso
这样即使用户退出系统,wget进程仍然继续运行直到test.iso下载完成为止

login  如何限制用户的最小密码长度
====================================
修改/etc/login.defs里面的PASS_MIN_LEN的值。比如限制用户最小密码长度是8:
PASS_MIN_LEN 8
这样用户设置密码的时候如果输入的密码长度小于8将不能设置

login  如何限制只有0组(gid=0)的用户可以su成root
====================================
修改/etc/login.defs里面的SU_WHEEL_ONLY的值为:
SU_WHEEL_ONLY yes
那么就只有gid为0的用户可以su成root。

ctrlaltdel  如何禁用Ctrl+Alt+Del键重启系统
====================================
有时候为了防止误操作导致系统重新启动(如机房里面新来了个习惯用Window$系统的管理员:-D),或者出于安全的原因,需要禁用Ctrl+Alt+Del组合键。
只需要注释掉/etc/inittab文件内的
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
这一行即可。如何注释?在这一行的行首放一个“#”号即可。

format  怎么样格式化磁盘
====================================
Linux下有一条mkfs命令,相当于format,可以对磁盘进行文件系统制作操作(或者说格式化)。命令的语法为:
mkfs -t 文件系统类型 /dev/设备名
如要把/dev/sda1格式为reiserfs格式,使用以下命令:
mkfs -t reiserfs /dev/sda1
当然,也可以使用mkfs.fstype命令来格式化磁盘,其中的fstype为文件系统名,如reiserfs文件系统的格式化命令为mkfs.reiserfs。上面那条命令的相应版本为:
mkfs.reiserfs /dev/sda1

如何取消root命令历史记录以增加安全性
====================================
  为了设置系统不记录每个人执行过的命令,就在/etc/profile里设置:
  HISTFILESIZE=0
  HISTSIZE=0
  或者:
  ln -s /dev/null ~/.bash_history
  这样就可以了。

ftp  如何使用netrc文件进行自动ftp
====================================
在自己的home目录下建立一个权限600,名为.netrc的文件,内容是:
machine 192.168.0.1 login test password test
这样以后你每次ftp 192.168.0.1的时候,系统都会帮你以用户名test,密码test登录。
利用这个特征可以实现自动ftp。
例如你想要每天5:00到192.168.0.1机器上面获得/test目录下的文件test.txt,可以这么做:
建立一个文件ftp_cmd,内容为:
cd test
get test.txt
bye
然后使用crontab -e设置定时任务:
0 5 * * * ftp 192.168.0.1 < ftp_cmd

如何测试硬盘性能
====================================
使用hdparm -t -T /dev/hdX就可以测试硬盘的buffer-cache reads和buffered disk reads两个数据,可以用来当作硬盘性能的参考。
同时使用hdparm -c3 /dev/hdaX还能设置硬盘以32bit传输,以加快数据传输的速度。

tar  压缩和打包文件
====================================
.bz2 文件如何解压缩 用tar -j 或者bunzip2 命令都可以。
.bz2 ????使用bzip2命令压缩的文件,可以使用bzip2 -d filename 解包
.gz ????使用gzip命令压缩的文件,可以使用gunzip -d filename 解包
.tar ????使用tar打包的文件,即tarball文件,可以使用tar xf filename 解包 ,tar cf path/name name 打包
.tbz ????使用tar打完包后再以bzip2命令压缩的文件,可以使用tar jxf filename 解包
.tgz ????使用tar打完包后再以gzip命令压缩的文件,可以使用tar zxf filename 解包
个人总结:
[.tar] 解开:tar xvf *.tar 把文件打包不压缩:tar cvf *.tar DirName
[.tar.gz]解开:tar xzvf *.tar.gz 把文件打包并压缩:tar czvf *.tar.gz DirName
[.bz2] 解开:bzip2 -d *.bz2
[.bz] 解开:bzip -d *.bz
[.gz] 解开:gzip -d *.gz
请参见:【Linux下常用压缩格式的压缩与解压方法 】


mount  如何对光驱、软驱实现AutoMount
====================================
安装完Redhat Linux之后,运行ntsysv,选中服务后台程序autofs.autofs的两个配置文件在/etc/auto.misc和 /etc/auto.master。
/etc/auto.master定义了mount目录和mount所需的配置文件名及其空闲时自动umount的时间。下面是默认配置:
[jephe@sh3 /etc]$ more auto.master
/misc /etc/auto.misc --timeout 60

下面是我的/etc/auto.misc配置文件:
[jephe@sh3 /etc]$ more auto.misc
cdrom -fstype=iso9660,ro :/dev/cdrom


mount  floppy -fstype=vfat :/dev/fd0
mount  e2floppy -fstype=ext2 :/dev/fd0
注:
a.确保/dev/cdrom作为符号链接指向你的光驱所在的分区,作为我的情况:
[jephe@sh3 /dev]$ ls cdrom -l
lrwxrwxrwx 1 root root 3 Aug 26 08:44 cdrom -> hdd
b.当软盘为windows 95格化化的vfat分区类型时,设定了安装目录/misc/floppy
c.当软盘为Linux格式化过的ext2分区类型时,设定了安装目录/misc/e2floppy

至此,若还未启动autofs,则运行/etc/rc.d/init.d/autofs start, 若对上述两个文件中做过任何更改,运行/etc/rc.d/init.d/autofs restart即可。

mount   放入一片光盘进入光驱后,不需任何动作,直接进入目录/misc/cdrom,autofs 将自动先为你mount光驱同样,若放入一张vfat格式的软盘,你可以cd /misc/floppy,若是ext2格式的软盘,则cd /misc/e2floppy。
mount  在超过一分钟未使用它们,且当前目录不是自动mount目录/misc/cdrom,/misc/floppy,/misc/e2floppy,系统将自动umount它们。

rename  批量重命名
rename  =================================
rename  for i in /root/mud/*.C; do mv $i ${i%.C}.c; done

cron 计划任务
====================================
简介
crontab-操作每个用户的守护程序和该执行的时间表。

部分参数说明
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。

下面是一个例子文件:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
10 6 * * * date
0 */2 * * * date
0 23-7/2,8 * * * date

如何在Linux里面恢复mbr?
====================================
  可以使用下面的命令来恢复:
  dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1
  其中bs(buffer size)是指重写的字节数。为什么不是512呢?主引导扇区是一个扇区(512字节)呀?答案是因为我们用上面的命令是为了修复可能被病毒修改了的主引导记录MBR,或者想把LILO卸载掉,而不是恢复整个主引导扇区。所以我们只把主引导扇区的备份文件boot.NNNN的前 446个字节重写入主引导扇区。boot.NNNN是我们在安装Linux之前整个主引导分区的备份。如果我们把512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬盘DPT表也破坏掉。那就坏事了。 :-)

如何列出一个目录占用的空间
====================================
du或du -s或du -k
du -S | sort -n 可以迅速发现那个目录是最大的。

用df可以看到已安装的文件系统的空间大小及剩余空间大小。

quota -v查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。

在使用less 或 more时,如何直接启动编辑器
====================================
在less或者more中打入v键,会立即启动vi编辑器,可以对文件进行编辑

如何察看你当前使用的Linux内核的版本
====================================
  可以使用uname -r来查看当前内核版本。如果使用uname -a可以查看包括内核版本,机器硬件信息、网络节点名、操作系统名字等信息

如何显示文件的类型
====================================
  用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件, 还是shell script文件或是其他的什么格式 例如:
#file startx

如何将man page转成HTML格式
====================================
  使用 man2html 这个指令,就可以将 man page 转成 HTML 格式了。用法是:
  man2html filename > htmlfile.html
  例子:
  man2html /usr/man/man1/man2html.1 > ~/man2html.html

查看文件内容的特殊方法
====================================
相信最基本的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行。

linux下文件分割与合并
====================================
  $dd if=source of=target.1 bs=1M count=10
  $dd if=source of=target.2 bs=1M skip=10
  source被分为target.1和target.2两个文件,其中target.1为source的前10M部分;target.2为source的减去10M后的部分。
  $cat target.1 target.2 > othersource
  source与othersource是同一个文件。

color  RedHat下如何显示彩色目录列表
color  ====================================
color  打开/etc/bashrc, 加入如下一行:
color  alias ls="ls --color"
color  下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的color含义如下:
color  蓝色-->目录
color  绿色-->可执行文件
color  红色-->压缩文件
color  浅蓝色-->链接文件
color  灰色-->其他文件

什么是Linux 运行级?
====================================
  什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6,具有不同的功能。这些级别在/etc/inittab文件里指定。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。
  不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)
  # 缺省的运行级,RHS 用到的级别如下:
  # 0 - 停机(千万不要把initdefault 设置为0 )
  # 1 - 单用户模式
  # 2 - 多用户,但是没有 NFS
  # 3 - 完全多用户模式
  # 4 - 没有用到
  # 5 - X11
  # 6 - 重新启动 (千万不要把initdefault 设置为6 )

  对各个运行级的详细解释:
  0 为停机,机器关闭。
  1 为单用户模式,就像Win9x 下的安全模式类似。
  2 为多用户模式,但是没有NFS 支持。
  3 为完整的多用户模式,是标准的运行级。
  4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
  5 就是X11,进到Xwindow系统了。
  6 为重启,运行init 6机器就会重启。
  不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:
  init=/bin/sh rw
  就可以使机器进入运行级1 ,并把root文件系统挂为读写。他会跳过所有系统认证,让你使用passwd 程序来改变root口令,然后启动到一个新的运行级。


系统平均负载(Load average)释疑
====================================
  在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?


系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
  - 它没有在等待I/O操作的结果
  - 它没有主动进入等待状态(也就是没有调用'wait')
  - 没有被停止(例如:等待终止)
  例如:
  [root@www2 init.d]# uptime
  7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
  命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
  一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

ps 如何以树状结构显示系统当前的任务
ps ====================================
ps   运行ps时指定-forest选项,当前运行的进程将会以树状格式显示出来。比如:所有由xserver运行的程序,将会以xserver做为它们的“根”显示出ps 来。
ps 命令格式:
ps   ps afx
ps   其中’a’表示列出所有运行的进程;’x’列出所有的后台进程;’f’是’-forest’的缩写。输出的格式如下:
ps   329 ? SW 0:00 [wdm]
ps   342 ? R 9:57 /_ /usr/X11R6/bin/X :0 vt7 -fbbpp 16 -auth /usr/etc/
ps   343 ? SW 0:00 /_ [wdm]
ps   364 ? S 0:45 /_ /usr/bin/enlightenment
ps   399 ? S 0:00 /_ /usr/bin/ssh-agent sh /home/tuneup/.xse
ps   404 ? S 2:28 /_ gkrellm -wm
ps   787 ? S 0:05 /_ aterm -fg white -tr
ps   788 ttyp0 SW 0:00 /_ [bash]
ps   792 ttyp0 S 0:00 /_ vim todo

ps  注:另外一种得到格式化输出结果的方法是:pstree -pu

列目录时如何显示中文文件名
====================================
  我们可以使用--show-control-chars命令选项来显示。
  例如:
  $ls --show-control-chars
  以通过修改fstab来实现,在fstab中加入类似内容:
fstab  /dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0

 
原创粉丝点击