linux系统管理命令


系统与管理命令

Users 和 Groups 类命令
users
重要程度:中
显示所有的登录的用户。这个命令与 who -q 基本一致。

groups
重要程度:中
列出当前用户和他所属于的组。这相当于 $GROUPS 内部变量,但是这个命令将会给出组名字,而不是数字。

chown,chgrp
重要程度:高
chown 命令将会修改一个或多个文件的所有权。对于 root 来说这是一种非常好的将文件的所有权从一个用户换到另一个用户的方法。一个普通用户不能修改文件的所有权,即使他是文件的宿主也不行。
chgrp 将会修改一个文件或文件夹组所有权。你必须是这些文件的宿主,并且是目的组的成员(或者root),这样才能使用这个操作。

useradd,userdel
重要程度:高
useradd 管理命令将会在系统上添加一个用户帐号,并且如果指定的话,还会为特定的用户创建 home 目录。相应的 userdel 命令将会从系统上删除一个用户帐号,并且删除相应的文件。
注意:adduser 命令与 useradd 是相同的,adduser 通常都是一个符号链接。

usermod
重要程度:高
修改用户帐号。可以修改密码,组身份,截止日期,或者给定用户帐号的其他的属性。使用这个命令,用户的密码可能会被锁定,因为密码会影响到帐号的有效性。

groupmod
重要程度:中
修改指定组。组名字或者 ID 号都可以使用这个命令来修改。

id
重要程度:高
id 将会列出当前进程的真实和有效用户ID,还有用户的组ID。这与Bash 的内部变量 UID,EUID 和 $GROUPS 很相像。
注意:id 命令只有在有效 ID 与真实 ID 不符时才会显示有效id。

who
重要程度:中
显示系统上所有已经登录的用户。
-m 选项将会只给出当前用户的详细信息。将任意两个参数传递到 who 中都等价于 who -m,就像 who am i 或者 who The Man。

w
重要程度:中
显示所有的登录的用户和属于它们的进程。这是一个who 的扩展版本。

logname
重要程度:中
显示当前用户的登录名(可以在/var/run/utmp 中找到)。这与上边的 whoami 很相近。
注意:logname 只会打印出登录的用户名,而 whoami 将会给出附着到当前进程的用户名。就像我们上边看到的那样,这两个名字有时会不同。

su
重要程度:高
使用一个代替的用户来运行一个程序或脚本。su rjones 将会以 rjones 来启动一个 shell。一个不加参数的 su 默认就是 root。

sudo
重要程度:中
以 root (或其他用户)的身份来运行一个命令。这个命令可以运行在脚本中,这样就允许以正规的用户身份来运行脚本。

passwd
重要程度:高
设置,修改,或者管理用户的密码。
passwd 命令的 -l,-u 和 -d 选项允许锁定,解锁和删除一个用户的密码。只有 root 用户可以使用这些选项。

ac
重要程度:低
显示用户登录的连接时间,就像从 /var/log/wtmp 中读取一样。这是GNU 的一个统计工具。

last
重要程度:中
用户最后登录的信息,就像从/var/log/wtmp 中读出来一样。这个命令也可以用来显示远端登录。

newgrp
重要程度:低
不用登出就可以修改用户的组ID,并且允许存取新组的文件。因为用户可能同时属于多个组,这个命令很少被使用。

终端类命令
tty
重要程度:低
显示当前用户终端的名字。注意每一个单独的 xterm 窗口都被算作一个不同的终端。

sty
重要程度:中
显示并(或)修改终端设置。这个复杂命令可以用在脚本中,并可以用来控制终端的行为和其显示输出的方法。参见这个命令的 info 页,并仔细学习它。

tset
重要程度:低
显示或初始化终端设置。可以说这是 stty 的功能比较弱的版本。

setserial
重要程度:低
设置或者显示串口参数。这个脚本只能被root 用户来运行,并且通常都在系统安装脚本中使用。

getty, agetty
重要程度:低
一个终端的初始化过程通常都是使用 getty 或 agetty 来建立,这样才能让用户登录。这些命令并不用在用户的 shell 脚本中。它们的行为与 stty 很相似。

mesg
重要程度:低
使能或禁用当前用户终端的存取权限。禁用存取权限将会阻止网络上的另一用户向这个终端写消息。

注意:当你正在编写文本文件的时候,在文本中间突然来了一个莫名其妙的消息,这对你来说是非常烦人的。在多用户的网络环境下,当你不想被打断的时候,你可能因此希望禁用对你终端的写权限。

wall
重要程度:低
这是一个缩写单词”write all”,也就是,向登录到网络上的任何终端的所有用户都发送一个消息。最早这是一个管理员的工具,很有用,比如,当系统有问题的时候,管理可以警告系统上的所有人暂时离开。

uname
重要程度:高
输出系统的说明(OS,内核版本,等等)到stdout。使用 -a 选项,将会给出详细的信息。使用 -s 选项只会输出 OS 类型。

arch
重要程度:中
显示系统的硬件体系结构。等价于 uname –m。

lastcomm
重要程度:低
给出前一个命令的信息,存储在 /var/account/pacct 文件中。命令名字与用户名字都可以使用选项来指定。这是GNU 的一个统计工具。

lastlog
重要程度:中
列出系统上所有用户最后登录的时间。存在 /var/log/lastlog 文件中。

lsof
重要程度:高
列出打开的文件。这个命令将会把所有当前打开的文件列出一份详细的表格,包括文件的所有者信息,尺寸,与它们相关的信息等等。

strace
重要程度:中
为了跟踪系统和信号的诊断和调试工具。调用它最简单的方法就是 strace COMMAND。
这是 Solaris truss 命令的Linux 的等价工具。

nmap
重要程度:中
网络端口扫描器。这个命令将会扫描一个服务器来定位打开的端口,并且定位这些端口相关的服务。这是一个防止网络被黑客入侵的一个重要的安全工具。

nc
重要程度:中
nc(netcat)工具是一个完整的工具包,可以使用它来连接和监听 TCP 和 UDP 端口。它可以用来作为诊断和测试工具,也可以用来作为基于脚本的 HTTP 客户端和服务器的组件。

free
重要程度:高
使用表格形式来显示内存和缓存的使用情况。

procinfo
重要程度:中
从 /proc pseudo-filesystem 中提取和显示所有信息和统计资料。这个命令将给出更详细的信息。

lsdev
重要程度:中
显示设备,也就是显示安装的硬件。

du
重要程度:高
递归的显示(磁盘)文件的使用状况。除非指定,默认是当前工作目录。

df
重要程度:高
使用列表的形式显示文件系统的使用状况。

dmesg
重要程度:高
将所有的系统启动消息输出到 stdout 上。方便出错,并且可以查出安装了哪些设备驱动和察看使用了哪些系统中断。

stat
重要程度:高
显示一个或多个给定文件(也可以是目录文件或设备文件)的详细的统计信息。

vmstat
重要程度:高
显示虚拟内存的统计信息。

netstat
重要程度:高
显示当前网络的统计和信息,比如路由表和激活的连接。这个工具存取 /proc/net 中的信息。
netstat -r 等价于 route 命令。

uptime
重要程度:高
显示系统运行的时间,还有其他一些统计信息。

hostname
重要程度:高
显示系统的主机名字。这个命令在 /etc/rc.d 安装脚本(/etc/rc.d/rc.sysinit 或类似的)中设置主机名。等价于uname -n,并且与$HOSTNAME 内部变量很相像。

hosted
重要程度:低
显示主机的32 位的16 进制ID。

sar
重要程度:高
sar(System Activity Reporter 系统活动报告)命令将会给出系统统计的一个非常详细的概要。Santa Cruz Operation(“老” SCO)公司在1999 年4 月份以开源软件的形式发布了sar。这个命令并不是基本 Linux 发行版的一部分,但是你可以从 Sebastien Godard 写的 sysstat utilities 包中获得这个工具。

readelf
重要程度:中
显示指定的 elf 格式的2进制文件的统计信息。这个工具是 binutils 工具包的一部分。

size
重要程度:中
size [/path/to/binary] 命令可以显示2进制可执行文件或归档文件每部分的尺寸。这个工具主要是程序员使用。

系统日志类
logger
重要程度:中
附加一个用户产生的消息到系统日之中 (/var/log/messages)。不是 root 用户也可以调用logger。

logrotate
重要程度:高
这个工具用来管理系统的 log 文件,可以在合适的时候轮换,压缩,删除和(或)e-mail它们。这个工具将从老的 log 文件中取得一些杂乱的记录保存在 /var/log 中。通常使用 cron 来每天运行logrotate。
在/etc/logrotate.conf 中添加合适的入口就可以管理自己的log 文件了,就像管理系统
log 文件一样.
注意: Stefano Falsetto 创造了rottlog,他认为这是logrotate 的改进版本.

作业控制
ps
重要程度:高
进程统计:通过进程所有者和PID(进程ID)来列出当前执行的进程。通常都是使用 ax 选项来调用这个命令。

pgrep, pkill
重要程度:中
ps 命令与grep 或kill 结合使用。

pstree
重要程度:高
使用”树”形式列出当前执行的进程。-p 选项显示PID,和进程名字。

top
重要程度:高
连续不断的显示 cpu 使用率最高的进程。-b 选项将会以文本方式显示,以便于可以在脚本中分析或存取。

nice
重要程度:中
使用修改后的优先级来运行一个后台作业。优先级从19(最低)到-20(最高)。只有 root 用户可以设置负的(比较高的)优先级。相关的命令是 renice,snice 和 skill。

nohup
重要程度:高
保持一个命令的运行,即使用户登出系统。这个命令做为前台进程来运行,除非前边加 &。
如果你在脚本中使用 nohup 命令,最好和 wait 命令一起使用,这样可以避免创建一个孤儿进程或僵尸进程。

pidof
重要程度:中
取得一个正在运行的作业的进程ID(PID)。因为一些作业控制命令,比如 kill 和 renice 只能使用进程的PID(而不是它的名字),所以有时候必须的取得PID。pidof 命令与 $PPID 内部变量非常相似。

fuser
重要程度:中
取得一个正在存取某个或某些文件(或目录)的进程ID。使用 -k 选项将会杀掉这些进程。对于系统安全来说,尤其是在脚本中想阻止未被授权的用户存取系统服务的时候,这个命令就显得很有用了。

cron
重要程度:中
管理程序调度器,执行一些日常任务,比如清除和删除系统 log 文件,或者更新 slocate 命令的数据库。这是 at 命令的超级用户版本(虽然每个用户都可以有自己的 crontab 文件,并且这个文件可以使用 crontab 命令来修改)。

进程控制和启动类
init
重要程度:高
init 命令是所有进程的父进程。在系统启动的最后一步调用,init 将会依据 /etc/inittab 来决定系统的运行级别。只能使用 root 身份来运行它的别名 telinit。

telinit
重要程度:高
init 命令的符号链接,这是一种修改系统运行级别的一个手段,通常在系统维护或者紧急的文件系统修复的时候才用。只能使用 root 身份调用。

runlevel
重要程度:中
显示当前和最后的运行级别,也就是,确定你的系统是否终止(runlevel 为0),还是运行在单用户模式(1),多用户模式(2),或者是运行在X Windows(5),还是正在重启(6)。这个命令将会存取 /var/run/utmp 文件。

halt, shutdown, reboot
重要程度:高
设置系统关机的命令,通常比电源关机的优先级高。

service
重要程度:高
开启或停止一个系统服务。启动脚本在 /etc/init.d 中,并且 /etc/rc.d 在系统启动的时候使用这个命令来启动服务。

网络类
ifconfig
重要程度:高
网络的接口配置和调试工具。

iwconfig
重要程度:低
这是为了配置无线网络的命令集合。可以说是上边的 ifconfig 的无线版本。

route
重要程度:高
显示内核路由表信息,或者查看内核路由表的修改。

chkconfig
重要程度:高
检查网络配置。这个命令负责显示和管理在启动过程中所开启的网络服务(这些服务都是从/etc/rc?.d 目录中开启的)。

tcpdump
重要程度:中
网络包的”嗅探器”。这是一个用来分析和调试网络上传输情况的工具,它所使用的手段是把匹配指定规则的包头都显示出来。

文件系统类
mount
重要程度:高
加载一个文件系统,通常都用来安装外部设备,比如软盘或 CDROM。文件 /etc/fstab 将会提供一个方便的列表,这个列表列出了所有可用的文件系统,分区和设备,另外还包括某些选项,比如是否可以自动或者手动的 mount。文件 /etc/mtab 显示了当前已经 mount 的文件系统和分区(包括虚拟的,比如 /proc)。
mount -a 将会mount 所有列在 /ect/fstab 中的文件系统和分区,除了那些标记有非自动选项的。在启动的时候,在 /etc/rc.d 中的一个启动脚本(rc.sysinit 或者一些相似的脚本)将会这么调用,mount 所有可用的文件系统和分区。

umount
重要程度:高
卸除一个当前已经 mount 的文件系统。在正常删除之前已经 mount 的软盘和 CDROM 之前这个设备必须被 unmount,否则文件系统将会损坏。

sync
重要程度:高
强制写入所有需要更新的 buffer 上的数据到硬盘上(同步带有 buffer 的驱动器)。如果不是严格必要的话,一个 sync 就可以保证系统管理员或者用户刚刚修改的数据会安全的在突然的断点中幸存下来。在比较早以前,在系统重启前都是使用 sync; sync (两次,这样保证绝对可靠),这是一种很有用的小心的方法。
有时候,比如当你想安全删除一个文件的时候,或者当磁盘灯开始闪烁的时候,你可能需要强制马上进行 buffer 刷新。

losetup
重要程度:中
建立和配置 loopback 设备。

mkswap
重要程度:中
创建一个交换分区或文件。交换区域随后必须马上使用 swapon 来使能。

swapon, swapoff
重要程度:中
使能/禁用交换分区或文件。这两个命令通常在启动和关机的时候才有效。

mke2fs
重要程度:高
创建 Linux ext2 文件系统。这个命令必须以 root 身份调用。

tune2fs
重要程度:高
调整 ext2 文件系统。可以用来修改文件系统参数,比如 mount 的最大数量。必须以 root 身份调用。

dumpe2fs
重要程度:中
打印(输出到 stdout 上)非常详细的文件系统信息。必须以root 身份调用。

hdparm
重要程度:中
列出或修改硬盘参数。这个命令必须以 root 身份调用,如果滥用的话会有危险。

fdisk
重要程度:高
在存储设备上(通常都是硬盘)创建和修改一个分区表。必须以 root 身份使用。

fsck,e2fsck,debugfs
重要程度:高
文件系统的检查,修复,和除错命令集合。
Fsck:检查 UNIX 文件系统的前端工具(也可以调用其它的工具)。文件系统的类型一般都是默认的 ext2。
e2fsck:ext2 文件系统检查器。
Debugfs:ext2 文件系统除错器。这个多功能但是危险的工具的用处之一就是(尝试)恢复删除的文件。只有高级用户才能用。

系统.
badblocks
重要程度:低
检查存储设备的坏块(物理损坏)。这个命令在格式化新安装的硬盘时或者测试备份的完整性的时候会被用到。

lsusb,usbmodules
重要程度:低
lsusb 命令会列出所有 USB(Universal Serial Bus 通用串行总线)总线和使用 USB 的设备。
usbmodules 命令会输出连接 USB 设备的驱动模块的信息。

mkbootdisk
重要程度:低
创建启动软盘,启动盘可以唤醒系统,比如当 MBR(master boot record 主启动记录)坏掉的时候。mkbootdisk 命令其实是一个 Bash 脚本,由 Erik Troan 所编写,放在 /sbin 目录中。

chroot
重要程度:高
修改 ROOT 目录。一般的命令都是从 $PATH 中获得的,相对的默认的根目录是 /。这个命令将会把根目录修改为另一个目录(并且也将把工作目录修改到那)。出于安全目的,这个命令时非常有用的,举个例子,当系统管理员希望限制一些特定的用户,比如 telnet 上来的用户,将他们限定到文件系统上一个安全的地方(这有时候被称为将一个 guest 用户限制在”chroot 监牢”中)。注意,在使用 chroot 之后,系统的二进制可执行文件的目录将不再可用了。
chroot /opt 将会使得原来的 /usr/bin 目录变为 /opt/usr/bin。同样,chroot /aaa/bbb /bin/ls 将会使得 ls 命令以 /aaa/bbb 作为根目录,而不是以前的 /。如果使用alias XX ‘chroot /aaa/bbb ls’,并把这句放到用户的~/.bashrc 文件中的话,这将可以有效地限制运行命令”XX”时,命令”XX”可以使用文件系统的范围。

lockfile
重要程度:低
这个工具是 procmail 包的一部分(www.procmail.org)。它可以创建一个锁定文件,锁定文件是一种用来控制存取文件,设备或资源的标记文件。锁定文件就像一个标记一样被使用,如果特定的文件,设备,或资源正在被一个特定的进程所使用(“busy”),那么对于其它进程来说,就只能受限进行存取(或者不能存取)。
锁定文件用在一些特定的场合,比如说保护系统的 mail 目录以防止多个用户同时修改,或者提示一个 modem 端口正在被存取,或者显示 Netscape 的一个实例正在使用它的缓存。脚本可以做一些检查工作,比如说一个特定的进程可以创建一个锁定文件,那么只要检查这个特定的进程是否在运行,就可以判断出锁定文件是否存在了。注意如果脚本尝试创建一个已经存在的锁定文件的话,那么脚本很可能被挂起。
一般情况下,应用创建或检查锁定文件都放在 /var/lock 目录中。

mknod
重要程度:中
创建块或者字符设备文件(当在系统上安装新硬盘时可能是必要的)。MAKEDEV 工具事实上具有 mknod 的全部功能,而且更容易使用.

MAKEDEV
重要程度:中
创建设备文件的工具。必须在 /dev 目录下,并且以 root 身份使用。
这是mknod 的高级版本.

tmpwatch
重要程度:中
自动删除在指定时间内未被存取过的文件。通常都是被 cron 调用,用来删掉老的 log 文件。

备份类
dump,restore
重要程度:低
dump 命令是一个精巧的文件系统备份工具,通常都用在比较大的安装和网络上。它读取原始的磁盘分区并且以二进制形式来写备份文件。需要备份的文件可以保存到各种各样的存储设备上,包括磁盘和磁带。restore 命令用来恢复dump 所产生的备份。

fdformat
重要程度:低
对软盘进行低级格式化。

系统资源类
ulimit
重要程度:高
设置使用系统资源的上限。通常情况下都是使用 -f 选项来调用,-f 用来设置文件尺寸的限制(ulimit -f 1000 就是将文件大小限制为1M)。-c选项来限制 coredump 尺寸(ulimit -c 0 就是不要 coredumps)。一般情况下,ulimit 的值应该设置在 /etc/profile 和(或) ~/.bash_profile 中。

quota
重要程度:中
显示用户或组的磁盘配额。

setquota
重要程度:中
从命令行中设置用户或组的磁盘配额。

umask
重要程度:高
设定用户创建文件时权限的缺省 mask (掩码)。也可以用来限制特定用户的默认文件属性。所有用户创建的文件属性都是由 umask 所指定的。

rdev
重要程度:中
取得root device,swap space,或 video mode 的相关信息,或者对它们进行修改。通常说来 rdev 都是被 lilo 所使用,但是在建立一个 ram disk 的时候,这个命令也很有用。

模块类
lsmod
重要程度:中
列出所有安装的内核模块。

insmod
重要程度:中
强制一个内核模块的安装(如果可能的话,使用 modprobe 来代替)必须以 root 身份调用。

rmmod
重要程度:中
强制卸载一个内核模块。必须以root 身份调用。

modprobe
重要程度:中
模块装载器,一般情况下都是在启动脚本中自动调用。必须以root 身份调用。

depmod
重要程度:中
创建模块依赖文件,一般都是在启动脚本中调用。

modinfo
重要程度:中
输出一个可装载模块的信息。

杂项类
env
重要程度:中
使用设置过的或修改过(并不是修改整个系统环境)的环境变量来运行一个程序或脚本。使用 [varname=xxx] 形式可以在脚本中修改环境变量。如果没有指定参数,那么这个命令将会列出所有设置的环境变量。

ldd
重要程度:中
显示一个可执行文件的共享库的依赖关系。

strip
重要程度:中
从可执行文件中去掉调试符号引用。这样做可以减小尺寸,但是就不能调试了。

nm
重要程度:中
列出未 strip 过的编译后的2进制文件的符号。

rdist
重要程度:中
远程文件分布客户机程序:在远端服务器上同步,克隆,或者备份一个文件系统。

相关内容