linux必需掌握的基础(一)
第3章 系统管理与设置
3.1常用的信息显示命令
arch:显示主机的体系结构,等同于uname -m,可输出i386、i486、arm等。
cal:显示日历。
cat /proc/meminfo:查看内存使用情况。/proc目录下的文件通常用来帮助查看内核运行信息,系统关闭后,该目录的文件不再存在。
cat /proc/modules:查看当前系统模块。
cat /proc/version:查看当前系统版本。
cat /proc/partitions:查看当前系统分区。
cat /etc/issue:显示当前系统的发行版本。
cat /proc/cpuinfo:显示CPU信息。
cat /proc/interrupts:显示中断信息。
cat /proc/filesystems:显示文件系统信息。
date:显示或设置系统时间。date +"%Y%m%d %H%M%S",记住加号 ,设置时间为 date -s "20170101" 或 "20:00:00"
dmesg:显示启动信息。检测和控制内核的缓存,通常用来显示输出系统最后一次启动时的内核内部缓存信息。
echo:显示文本行。(echo -e支持转义字符)
free:显示内存信息。(free -s 2 -c 3表示每隔2s刷新一次内存,共刷新3次)
fgconsole:显示活动的虚拟终端数目。
fuser:用文件或套接口识别进程。(fuser -l显示信号,fuser -a /root显示与/root目录相关的进程,fuser -k /root杀死所有与/root目录相关的进程)
gdialog:从Shell创建对话框。(例:gdialog --title "hello" --yesno "this is content")
history:显示历史指令。(保留最近执行的命令记录,默认可以保留500个。history 5表示显示最近执行的5个命令。history -c清空历史记录。重新执行已执行的命令可以使用“!<命令事件号>”)
hostname:显示或设置当前系统的主机名。(-s显示短主机名;-a显示主机别名;-i显示主机IP;-d显示主机域名;--yp显示NIS/YP域名;hostname somename设置主机名)
hash:显示、添加或清除哈希表。(-l显示哈希表;-r清除表;-p<path><name>增加内容;-t<command>显示指定命令的完整路径),hash表开机为空,每执行一个命令,系统会记录命令路径,然后再次执行时就在这个路径找
hwclock:显示和设置硬件时钟。(hwclock -utc显示utc时间)
ipcs:显示IPC设备信息。(对进程通信进行描述。-p显示PID信息;-t时间信息;-m共享内存信息;-c创建者信息)
isosize:显示输出iso9660文件系统的大小。(光驱设备属于iso9660文件系统,isosize /dev/cdrom显示文件大小。isosize -d 1024 /dev/cdrom以大小为1024的块来显示光驱设备的大小。-x以易读方式显示大小。)
jobs:显示后台执行的作业。(命令后接&会以后台方式运行该命令。-l列出作业的详细信息;-p列出作业ID,-s列出停止执行的作业。)与 fg(调到前台) bg(先挂起,后放入后台执行)
lsmod:显示所有已加载的模块。
modinfo:显示内核模块信息。(modinfo modname)modinfo name 显示name模块的内容。
depmod 查看依赖关系
locale:显示当前系统的语言设置。(-a输出所有可用的语言名称;-m输出所有可用的字符集)
mesg:显示信息。(y允许用户通过write命令发送信息到当前终端;n禁止发送)
minfo:显示ms-dos文件系统的各项参数。(包括扇区数、磁头数、柱面数等。minfo -v C: 除显示文件系统的各项参数外,以十六进制显示C盘扇区内容。)
mev:监视鼠标情况。
pstree:以树状图显示程序。(默认以init进程为根。pid可指定某一进程为根;-p可显示进程及进程号;-h高亮当前正在执行的进程。)
pwd:显示当前目录。
proc文件系统:查看系统内核信息。(proc不是真实的文件系统,不占用外存,只是以文件的方式为访问Linux内核数据提供接口。ls /proc可查看)
ps:** 报告程序状况。(-e查看当前所有进程;-u root查看以root身份运行的进程;-u root N查看非root身份运行的进程;-o pid,tt,user,fname,f,tmout,wchan以指定的排序方式显示;a显示所有进程,包括其他用户的进程;x显示没有控制终端的所有 进程;-C command显示与command进程相关的进程号,进程及其子进程)
pmap:** 显示程序的内存信息。pmap -d pid
mapped: 21304K writeable/private: 1964K shared: 28K (第二项为实际占用内存,第一项为虚拟内存)
procinfo:显示系统状态信息。(需要安装工具)
runlevel:显示系统运行级别。(输出前一个和当前的运行级别。如果没有记录上次系统的运行等级,则用N表示。运行级别说明:0-关闭系统;1-单用户模式;2-多用户模式,但不支持NFS;3-完全的多用户模式;4-保留;5-图形用户模式;6-重新启动。)(一般为命令行3,图像5,init 0为关机,init 6为重启)
sysctl:设置系统核心参数。(-a显示当前所有的设置;-w<varible=key>设置参数。)
stat:显示文件/文件系统的详细信息。(例:stat /dev/sda)看 ctime atime mtime
file 命令一块使用,可查看文件格式信息等
top:显示进程信息。(q键退出)tload(动态的类似top) uptime (top第一行)
tload:显示系统负载。
uptime:显示系统的运行信息。(18:28:00 up 1 day, 6:58, 7 users, load average: 0.07, 0.07, 0.12表示当前时间为18:28,系统运行1天6小时58分,有7个用户登陆系统,过去一分钟内的平均负载为0.07,过支5分钟内的平均负载为 0.07,过去15分钟内的平均负载为0.12。)
time:执行命令并显示该进程执行的时间。(例time ls)time sleep 2 可以看到休眠2s
uname:显示操作系统信息。(-a显示当前主机所有软硬件信息 -o -s -i)
vmstat:显示虚拟内存的统计信息。
yes:连续输出给定的字符串。(yes | rm -i *命令可以自动回答rm命令提出的问题)
3.2 常用的系统管理命令
apm:高级电源管理。(ubuntu显示No APM support in kernel)
apmd:高级电源管理守护进程。
apmsleep:设置挂起、待机及唤醒。(apmsleep -s +1:50挂机1小时50分钟后被唤醒。apmsleep -s 8:00挂机直到早上8点被唤醒)
bg:将程序放在后台执行。(例:sudo find / -name *.txt,之后用ctrl+z中止,显示"[2]+ 已停止 sudo find / -name *.txt",再执行bg 2可把这个程序放在后台执行。)
chsh:改变登录系统时的Shell。(默认为/bin/bash。)
clear:清除终端屏幕。
depmod:检查模块依赖关系。(--show显示输出模块之间的依赖关系。)
exec:执行完命令后,交出控制权。(虚拟终端上运行该exec会在执行完命令后退出终端。)和find常搭配使用 !!
fc:修改并执行命令。(-l类似于history。fc 2 4:把命令号为2、3、4的命令在vi中编辑,编辑完成后执行这些命令。)
fg:把后台任务放到前台。(vi &,再通过jobs可以查看后台任务,显示“[1]+ 已停止 vi”。执行fg 1可以把vi放到前台执行。)
gcov:coverage测试工具。(gcc sorcefile.c -o executable -ftest-coverage -fprofile-arcs可以生成一个.gcno文件,再运行executalbe,之后便可以用gcov命令查看运行情况。-b查看程序的分支情 况,-f查看函数的使用情况。)
init:所有进程的父进程。(init 数字可以切换运行等级。比如init 0为关机;init 6是重启。init有一个链接命令telinit。)
ipcs显示IPC相关信息 -a = (-q)+(-m)+(-s)
ipcrm:删除消息队列、信号量或共享内存的ID。(ipcs显示IPC相关信息,ipcrm -m 32768删除进程32768的共享内存;-q删除消息队列;-s删除信号量。不带参数删除所有。)
kill:杀死进程。(-l参数显示所有可以使用的信号。kill -s 信号 进程号:向进程发送指定信号,不指定时的默认信号为SIGHUP。-s SIGKILL强制杀死进程,可能导致某些资源没有正确释放。信号可以直接作为参数,如kill -KILL或kill -9。)
killall:杀死同名的所有进程。(-l显示所有可用的信号。killall -s signal 进程名:向所有同名进程发送信号。默认信号为SIGTERM。信号也可以直接作为参数。)
logrotate:处理log文件。(替换、压缩、删除或通过邮件发送系统日志。logrotate /etc/logrotate.conf指定配置文件。)
mtools:软盘操作命令集。(mtools显示所有支持的软盘命令,为相应的MS-DOS命令前加“m”,如"mdir a:"。)
nice:设定进程优先级。(nice -N 命令。如nice -15 vim。N取值范围为-20~19。-20是最高等级,19是最低等级。超过19的值被视为19;小于-20的值被视为-20。系统默认等级为0。未指定优先级的nice命令默认等级为10。)
nohup:退出系统继续执行命令。(虚拟终端运行nohup command &会运行命令,并显示nohup: 忽略输入并把输出追加到"nohup.out"。)
ntsysv:设置系统的各种服务。(显示图形界面。ubuntu上找不到该命令。)
open:开启虚拟终端。(open -s -c 6 -- ls -al在虚拟终端6执行ls -al命令,同时切换到虚拟终端6。-s执行命令时,切换到新的虚拟终端。-w等待命令结束。如果-w与-s合用,在命令结束后切换加原来的终端。)
pgrep:查找符合条件的进程。(-u root查找由root用户创建的进程,-l同时列出进程名称和ID。-v搜索不符合条件的进程。-P pid列出父进程为指定进程的所有进程。)
pidof:显示当前正在运行程序的进程ID。(例pidof vi。-o omitpid忽略进程号为omitpid的进程。-s返回首次匹配。)
pkill:杀死进程。(ps各kill的结合,在当前所有进程中查找符合条件的进程,然后发送相应信号。pkill -t tty8杀死终端8的所有进程。-u root杀死root的进程。pkill -9 vim杀死vim。)
pwck:检查密码文件。(例:pwck /etc/passwd;pwck /etc/shadow。-r只读模式。)
rlogin:远端登录。(先在远端主机上运行chkconfig rlogin on开启rlogin服务,ubuntu上找不到该服务。之后使用rlogin 192.168.20.122 -l username来登录该远端主机。)
renice:对进程优先级进程调整。(renice N 进程号,或-u 用户名,或-g 用户组。与nice不同,N前不需要“-”。)
rmmod:删除模块。(lsmod显示系统已安装的模块。-a删除所有没有使用的模块。-v显示运行时的详细信息。)
rsh:远端登录的Shell。(远端主机chkconfig rsh on。例:rsh -l yang 192.168.20.122 /bin/ls。ubuntu上rsh为unknown service。)
screen:多重视窗管理程序。(在一个终端上模拟多个终端。 screen或ctrl+a+c创建一个新的screen。ctrl+a进行screen的切换。screen -ls显示所有screen列表。-d让指定的screen离线。-r恢复指定的作业。unbuntu的虚拟终端好像只能创建一个screen。)
sleep:休眠。(s秒,m分,h小时,d天。虚拟终端上表示为其自身暂停。)
sudo:以其他身份来执行命令。(-L列出可以使用的参数。-u username使用指定身份执行命令。)
suspend:暂停执行Shell。(直到收到SIGCONT信号为止。-f表示强制暂停。)
symlinks:管理和维护符号链接。(symlinks -v /:列出根目录下所有的符号链接。-c将绝对路径的链接转化为相对路径;-d删除失效的链接(dangling);-r递归检查子目录;-t与-c合用时,对换进行检测,但不进行实际的转换。)
vlock:锁定终端。
wait:等待程序返回状态。(例:wait pid。)
watch:重复执行命令并将结果输出。(watch -n 10 ls每隔10秒运行一次ls命令。)
&:将任务放到后台执行。(例:vi &。)
3.3 常用的系统维护命令
alias:设置命令的别名。(alias列出已有的别名。-p以“name=value”的形式列出别名。alias name=value设置别名。)
aumix:设置音效设备。(图形界面。ubuntu上运行:aumix:打开混音器时发生错误: 没有那个文件或目录。)
authconfig:配置系统的认证资源。(图形界面。对NIS、/etc/passwd、/etc/shadow、LDAP、Kerberos5以及SMB等资源认证进行配置。-back将“取消”按钮更改为“返回”按钮。ubuntu:authconfig:找不到命令)
bind:显示或设置按键组合。(-l列出所有功能函数的名称。-p列出所有功能函数及其绑定。-q function查询指定功能的按键或按键组合。)
chkconfig:设置和检查系统的服务设置。(--list列出所有服务设置状态。chkconfig telnet on开启telnet服务。chkconfig telnet off关闭telnet服务。)
declare:显示或设置Shell变量。(-p显示每一变量的名称和属性值。-x显示环境变量;-f显示函数名称;-r只读模式。)
dircolors:设置ls命令显示的颜色。(-p显示默认值。-b显示Bourne Shell颜色代码设置;-c显示C Shell颜色代码设置。)
enable:开动或关闭Shell内置命令。(-a显示所有内置命令;-p显示已加载的命令列表;enable name指定加载的命令。enable -n name关闭指定的命令。)
eval:连续执行多个命令。(例:eval ls; free; ps)
export:设置或显示环境变量。(-p显示所有环境变量。export name=value设置;-n删除。)
false:返回值为失败。(例:ls后,echo $?显示0,表示无错误。false后,echo $?显示1,表示失败。)
fbset:显示或设置帧缓存。(fbset -g 800 600 1024 768设置画面分辨率800x600、桌面分辨率1024x768。-accel true启动硬件加速。-bcast true启动广播功能。-test测试。)
hostid:显示出当前主机的数字标识。
insmod:载入模块。
ldcondifg:配置动态链接绑定。(-v建立共享库的正确链接,更新缓冲区,并显示相关信息。-n dir只对特定目录更新。)
ldd:显示共享库文件的相互信赖关系。(显示指定的程序或库文件所使用的共享库。-v显示所有信息。)
lilo:安装启动装载程序。
losetup:设置和控制循环设备。(例:losetup /dev/loop0。)
mkraid:初始化或升级raid。(将一组块设备设置为一个raid设备阵列。适合所有raid类型,包括RAID1、RAID4、RAID5、线性和RAID0。例:mkraid -f /dev/sda1+/dev/fd0。)
modprobe:自动处理可载入模块。(根据模块内的依赖关系自动安装所有依赖的模块。-c显示当前默认设置。例:modprobe -v 8139too安装网卡8139too。)
mouseconfig:设置鼠标相关参数。(redhat linux下的鼠标配置工具,ubuntu不支持。--text图形界面方式;--noui genericusb以命令形式指定鼠标类型为genericusb。--device psaux指定鼠标所在的端口为PS/2。)
resize:设置终端视窗的大小。(resize查看视窗大小。-s 30 100设置大小为30行,每行100字符。-c采用C shell命令;-u采用Bourne Shell命令。)
rmp:管理rpm包。(-i安装;-q查询;-e卸载。)
setserial:设置或显示串口的信息。(例:setserial -v /dev/ttyS1显示串口/dev/ttyS1的信息。-a显示详细配置信息。)
setup:设置公用程序。(设置认证、防火墙、鼠标、网络配置、打印机配置、系统服务、时区配置等公用程序。ubuntu不支持。)
swapoff:卸载交换区(swap area)。(fdisk -l显示系统分区信息,/dev/sda3可能是一个交换分区。swapoff /dev/sda3卸载该交换分区。)
swapon:加载交换区。(swapon /dev/sda3加载交换分区。swapon -s /dev/sda3显示交换分区信息。)
set:设置Shell执行方式。(-f禁止使用通配符。+f添加通配符设置。例:set SHELL "/bin/sh"。)
telinit:设置系统运行等级。(/sbin/init的链接。)
true:返回值为成功。(与false相反。)
ulimit:控制Shell及进程的资源。(-a显示资源配置。-u 500设置单用户创建进程上限为500;-n 1000同一时间允许打开的文件数目最多为1000;-v 1024最大虚拟内存为1M。)
unalias:取消指定的别名。
unset:删除变量或函数。
up2date:升级red hat linux系统。(ubuntu不支持。)
3.4 自动作业处理
crontab:设置定时执行。(首先确保有crond守护进程运 行,用service crond start或service crond stop来开启或关闭crond进程。ubuntu上是cron。该进程运行后,可以编辑/etc/crontab文件来设置自动作业。可以看到文件组织 格式为“m h dom mon dow user command”,分别表示“分、小时、日期、月、星期、用户、命令”。例:17 * * * * root cd / && run-parts --report /etc/cron.hourly表示每小时的第17分钟以root身份运行cd / && ... hourly的命令。另*/1 * * * * root echo tommy crontab~~表示每隔1分钟以root身份执行echo,默认情况会以邮件的方式发给root,通过cat /etc/mail/root可以查看。可以使用重定向“echo tommy crontab~~ >> /home/tommy/tmp/record”把输出转到一个文件中。)
anacron:任务高度守护进程。(与cron类似,区别在于 cron任务如果在指定时间没能完成,则调度工作就会失败,而anacron没能成功执行后会间隔一段时间后再次执行该任务。需要通过service anacron start启动守护进程。编辑/etc/anacrontab命令可以设置调度任务。文件格式为:时间间隔、等待时间、任务标识、命令。例:1 65 cron.daily run-parts /etc/cron.daily。)
at:系统将执行的任务排队。(把任务放到队列中,按时执行,与 crond的区别是它只执行一次。例:at 21:55<回车> ls -al / /myshare/at_test<回车> <Ctrl+d>在21:55时执行。at now +5 min在5分钟后执行。at 3pm tomorrow在明天下午3点执行。at 8am+3days在三天后早上8点执行。at -l查询已经设置的任务。at -c 6显示已经设置的任务6的内容。所有的任务都存储在/var/spool/at目录中。)
atd:执行已经排队的任务。(at的任务要执行的话,必须要有一个atd的守护进程运行。-d输出调试信息。-s只执行已排队的任务一次。)
atq:检查排队的任务。
atrm:删除已经排队的任务。
atrun:执行已排队的任务。(本质为一个Shell脚本,等价于atd -s。)
batch:批处理。(与at一样,batch也使用atd守护进 程执行,命令格式也相同。不同在于batch在系统平均负载低于一个特定值时才会运行,默认为0.8。例:batch<回车> ls <回车> echo "hello" <回车> <Ctrl+d>。)
3.5 系统日志
syslogd:启动syslog日志进程。(-r招收来自网络的syslog信息。修改配置文件后,用killall -HUP syslogd来重启syslog进程。)
syslog.conf:系统日志配置文件。(/etc /syslog.conf,格式为[消息来源.消息级别] <Tab> [动作]。例:mail.* /var/log/maillog将所有与电子邮件相关的信息保存到mailog文件中。kern.emerg *把内核恐慌消息发送给所有登录的用户。)
logger:测试syslog.conf。(logger -p [消息] [消息内容]。例:logger -p kern.emerg "Just test"。)
echo > 日志文件:清空日志。(如果创建日志文件的服务正在运行,必须停止服务,才能删除日志。利用echo命令,不必停止日志服务。例:echo > /usr/local/apache/logs/error_log。)
第4章 用户和用户组管理
4.1 普通用户的管理
/etc/passwd文件:存储用户的相关信息。(包括用户名、 字码、主目录位置等。可以用vipw命令编辑/etc/passwd文件。vipw类似于vi,但在编辑文件时对文件加锁,编辑结束后解锁。文件格式 为:Username:encrypted password:UID:GID:full name:home directory:login shell。例:root:x:0:0:root:/root:/bin/bash。因为linux2.0以上版本因为安全性,把密码与用户基本信息分开 存储,所以在存放密码的位置为“x”标识。真正的密码在/etc/shadow文件中。用户标识号UID为整数,取值范围为0~65535。0~439一 般由系统保留,其中“0”为根用户。用户组标识号GID也为整数,0~439被系统保留,用户组的具体定义在/etc/group文件。个人信息描述 full name记录用户的真实姓名、电话、地址、邮编等信息,各项之间用“,”分隔,该字段可以为空。登录目录home directory是用户登录系统后的默认目录,通常就是用户的主目录,一般在/home下。根用户的登录目录为/root。登录Shell是用户以文本 方式登录系统后启动的Shell进程,常用的包括sh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tcsh(TENEX/TOPS-20 type C Shell)、bash(Bourne Again Shell)等。)
/etc/shadow文件:存储用户密码。(passwd文件可 被普通用户访问,而shadow文件只能被根用户访问。文件格式为:Username:Encrypted password:Number of days:Minimum password life:Maximum password life:Warning period:Disable account:Account expiration:Reserved,分别表示用户名、密码、从1970年到上次修改密码的天数、密码必须连续使用的天数、密码有效期、密码失效前告 警的天数、从密码过期到彻底停用的天数、账号失效日期、保留字段。例:daemon:*:15089:0:99999:7:::。密码由 MD5(Message Digest v5)算法加密。)
pwconv:创建影子文件。(把/etc/passwd中的密码转换为“x”,同时创建影子文件/etc/shadow保存密码。)
pwunconv:从影子文件恢复密文。(与pwconv相反,把/etc/shadow中的密码加入到/etc/passwd文件中,并删除/etc/shadow文件。)
useradd:添加新用户。(adduser是useradd的 一个链接。-c comment:用户的注释说明;-d home_dir:登录目录;-e expire_date:帐号失效日期;-f inactive_days:帐号过期到永久停用的天数,值为0时表示帐号到期后立即停用,系统默认值为-1,表示账号不会被停用;-g initial_group:用户默认的用户组或默认用户组ID,必须是已经存在的,默认值为100,表示users组;-G group:设定该用户为若干用户组的成员,每个用户组之间用“,”分隔,且不可夹杂空格;-m:用户目录如不存在则自动建立;-k:把目录 skeleton_dir和/etc/skel的文档复制到用户目录中,默认下-m和-k都不被启用;-M:不建立用户主目录,使用/etc /login.defs系统文件对用户进行设定;-n:系统默认用户组名称与用户名称相同;-r:建立系统帐号,即比定义在/etc /logins.defs中的UID_MIN小的值,UID_MIN的默认值是500,-r不会创建用户主目录,除非指定-m参数;-sehll default_shell:指定用户的登录Shell,默认为/bin/bash;-u uid:用户UID;-D:单独使用时显示当前默认值,与其它选项一起使用表示在默认设置的基础上重新设定默认值。)
usermod:修改用户的帐号。(支持useradd命令的选项,如-c、-d、-e、-f、-g、-G、-s、-u,此外还支持-l login_name:变更用户登录时的名称。)
userdel:删除用户。(删除用户在系统的账户信息。-r删除 用户主目录下的文档,不指定该选项则保留主目录。删除用户前,应该等待该用户的进程执行完毕,或用ps -aux | grep "username"终止。此外还应查看是否有该用户的定时任务,用命令crontab -u username -r。)
passwd:修改用户密码。(-k:只有密码过期才需要用户设定 密码。-l:通过在用户的密码字段加前缀“!”,对用户进行锁定。锁定的用户无法登录系统。--stdin:从标准输入重新读入密码。-u:与-l相反, 删除密码字段前的“!”对锁定的用户进行解锁,口令为空的用户原则上是不允许解锁的,配合-f可强制解锁;-d:快速删除用户的密码。-n mindays:设定最短的密码有效期。-x maxdays:设定最长的密码有效期。-w:密码过期前,提前发出警报的天数。-i inactivedays:密码过期到帐号停用的天数。-S:显示指定用户当前密码状态。passwd单独使用时改变当前用户的密码。根用户可以用 passwd username修改其他用户的密码。)
newusers:批量创建用户。(首先建立一个用户信息文件,格式与/etc/passwd相同,之后用命令newusers < filename来添加文件中定义的用户。如果不使用管道方式“<”,可以在标准输入中输入各行,以ctrl+d表示结束。)
chpasswd:批量创建用户密码。(与newusers类似,从文件中导入密码信息,文件格式为username:password。)
chage:查看帐户密码的有效期。(例:chage -l username。)
4.2 根用户的管理
su:变更用户身份。(例:su username。不输入用户名时,默认的用户为root。)
chroot:改变根目录。(对进程建立新的虚拟根目录“/“,通常保护真正的根目录。chroot newroot [command]。例:创建目录/tmp/empty,把ls链接到该目录,再运行chroot /tmp/empty /ls -Rl /。)
4.3 用户组的管理
/etc/group文件:存储组信息。(文件格式:用户组:加密密码:GID:组成员列表。密码用“x”代替。)
/etc/gshadow文件:存储组密码。(文件格式:用户组名称:加密密码:管理员帐号:组成员列表。管理员可以对该组进行增、删、改等操作。)
groupadd:添加新用户组。(命令格式:groupadd [-g GID [-o]] [-r] [-f] [-K KEY=VALUE] groupname。-g GID:用户组id;-r:创建小于500的系统组,若不指定-g,则按递减顺序从小于500的可用值中挑选;-f:如果所定义的组已存在,则退出并显示 成功信息,若-g和-f合用,且-g指定的组已存在,则-g指定的组被忽略且新的group会分配另一个id值;-o允许指定不唯一的GID;-K KEY=VALUE:重载/etc/login.defs中的默认值,例如设置GID_MIN;groupname:用户组名称。)
groupmod:修改用户组属性。(-g GID;-n new groupname。例:groupmod -g 503 -n yourgroup mygroup。)
groupdel:删除用户组。(必须等待该用户组的所有用户退出系统才能正常删除。)
newgrp:切换所属用户组。(一个用户同时可以属于多个用户组,但用户登录系统后,默认只属于一个用户组,newgrp可以使用户在多个用户组之间进行切换。语法:newgrp [-] [groupname]。“-”用于重新加载用户工作环境,否则工作环境不改变。)
4.4 用户和用户组管理的安全防范措施
ac:统计用户连接时间。(ac查看系统总的连接时间。ac -p按用户进行统计。ac -d按天对连接进行汇总。)
last:查询最近的使用者登录时间。(例:last -n 10仅显示10行记录。)
lastb:显示最近登录系统失败的用户信息。
who:查询当前系统中登录的用户。(-H显示标题栏;-i显示空闲时间字段;-T显示用户状态;-m显示使用当前标准输入设备的用户;-q显示所有登录的用户名以及登录用户的数目;-p显示由init进程创建的活动进程。)
w:查看登录用户及其进行的操作。(-f显示登录用户信息,但不显示登录位置。-s以精简模式显示登录用户信息;-h不显示标题栏;w root只查询root用户的信息。)
4.5 其他用户和用户组管理的常用命令
finger:查找并显示用户信息。(finger -l显示用户信息。finger username显示特定用户的信息。)
groups:显示指定用户所属的用户组。(groups显示当前用户所属的用户组。groups username显示特定用户的用户组。)
id:显示用户的UID、GID。(id显示当前用户的UID、 GID、和用户所属的组列表。id username显示特定用户的相应信息。-g显示当前组ID;-G显示用户所属的所有组ID;-u显示用户ID;-n显示名称而非数字;-r显示真实用 户ID而非有效用户ID。)
logname:显示登录用户的用户名。
rwho:查看登录本地的用户信息。(与who类似,但可以显示局域网中多台主机的用户登录信息。当rwho命令在11分钟内没有收到主机的反馈信息,则会认为主机已关闭,也不会报告已知的登录用户。除非使用-a选项,否则忽略1小时内没有操作的用户。)
users:显示当前登录的用户。
write:将信息实时传递给登录的用户或终端。(例:write username<回车>this is message<回车><ctrl+d>。)
whoami:显示当前用户信息。
4.6 用户及用户组管理命令的综合应用
/etc/nologin文件:引起普通用户无法登录的问题。(通过touch /etc/nologin命令可以建立该文件。删除该文件可以解决普通用户不能登录的问题。ssh不查看/etc/nologin文件,所以即使该文件存在,使用ssh仍可以登录系统。)
第5章 磁盘管理
5.1 Linux磁盘分区工具
硬盘可以分成若干个分区,每个分区可视为独立的磁盘来使用。硬盘的分区方案被记录到“磁盘分区表”中,通常该表由4个部分组成,每个部分定义一个分 区的信息,因此原始概念中一个硬盘最多只能建立4个分区,称为“主分区”。由于硬盘越来越大,4个分区已不无法满足用户的需要,为此引入“扩展分区”的概 念。扩展分区由扩展磁盘分区表维护,可以把某个主分区作为扩展分区划分为若干更小的“逻辑分区”。理论上,硬盘空间足够时,可以建立任意数量的分区。
Linux上建议的分区有:swap分区,即虚拟内存;boot分区,存放操作系统的内核;根分区,整个操作系统的根目录;/var分区,可以避免日志文件的大小失控;/home分区,控制用户占用的空间大小。
磁盘分区工具有:
fdisk:强大的磁盘分区工具,不仅适合于Linux,在 Windows及MS-DOS中也有广泛应用。-l显示当前设备的分区表。-s /dev/sda1显示指定分区的大小。-s /dev/sda显示设备所有分区大小的总和。-v显示fdisk的版本号。fdisk /dev/sda可以进入命令交互模式,内部命令包括m:显示命令帮助;p:显示当前分区表;q:退出;等等。)
parted:Linux下的磁盘分区与分区调整工具。parted /dev/sda可进入交互模式。
sfdisk:-l显示分区信息。-s显示磁盘或分区大小。
5.2 常用的磁盘管理命令
badblocks:检查设备坏块。(-s 显示检查进度。)
du:统计文件和目录占用的磁盘空间。(如果没有指定文件或目录名,则默认对当前目录进行统计。-s仅显示文件 或目录占用的块数,默认一块等于1024字节。-b以字节为单位进行统计;-k以1024字节为单位;-m以1024K为单位;-c同时显示总计;-h按 需显示K、M或G。-a显示所有文件及其子目录占用的数据块数。例:du ~tommy,统计tommy的主目录。)
df:显示文件系统磁盘空间使用情况。(不指定文件系统的话,则显示所有当前挂载的文件系统的可用空间。默认情 况下空间以1KB为单位进行显示,除非环境变量POSIXLY_CORRECT被指定,此时以512字节为单位。-i以inode模式显示,列出的都为 inode数量;-h以可读方式显示,按需显示K、M或G;-t type只显示指定文件系统的信息,如df -t ext3;-x type与-t相反,不显示指定的磁盘类型的磁盘。)
fdformat:格式化磁盘。(-n表示格式化完成后不进行验证。)
hdparam:显示和设定硬盘参数。(-C显示电源管理,-d 1开启DMA模式。例:hdparm /dev/sda1。)
mkfs:设置磁盘的文件系统。(例:mkfs -t ext4 /dev/sda2。)
mkswap:设置交换分区(swap area)。(例:mkswap /dev/hda4,将hda4指定为一个新式的交换分区。-c在创建交换分区前检查坏块;-v0建立一个旧式的交换区,-v1建立一个新式的交换区。)
mkisofs:建立ISO9660/JOLIET/HTS文件系统。(例:mkisofs -o myiso myfile把myfile制作为名为myiso的镜像文件。)
mkinitrd:创建ramdisk的镜像文件。(例:mkinitrd myfile.img 2.2.5-15建立名为myfile.img、内核号为2.2.5-15的镜像文件。ubuntu上不支持。)
mt:磁带驱动操作。(语法:mt operation device。操作有rewind、erase等。rmt命令是远端磁带传输协议模块,可以通过进程间通信,远程控制磁带机进行备份、恢复备份操作。)
mzip:弹出Zip/Jaz设备中的磁盘。(-e弹出磁盘;-f与-e同时使用强制弹出;-q查询状态。)
sync:将缓冲区内的数据写入磁盘。(在卸载移动硬盘前,可用sync把内存数据写入磁盘。)
rsync:远程同步。(例:rsync -av -e ssh /home/share/*.doc root@teacher.example.com:/usr/local/share通过ssh把/home/share下的所有doc文件备份到了 teacher主机的/usr/local/share目录下。只同步修改过的文件和目录。-a:归档模式;-v:冗余模式。)
5.3 磁盘配额管理
/etc/fstab文件:定义分区的挂载方式。(文件格式 为:<file system> <mount point> <type> <options> <dump> <pass>。例:/dev/sda1 / ext4 errors=remount-ro,user_xattr 0 1。要启用磁盘配额管理,则需要添加usrquota和grpquota选项,例:/dev/sda2 /mnt/disk ext4 defaults,usrquota,grpquota 0 1。更改该文件后,需要reboot或者重新挂载使得配置文件生效:mount -o remount /dev/sda2。注意,当新的分区建立后,需要使用mkfs指定该分区的文件类型,否则挂载时会出现找不到文件系统的错误。)
quotacheck:检查磁盘的使用空间与限制。(在修改 /etc/fstab文件并添加usrquota与grpquota选项后,可以使用命令quotacheck -avugc来创建aquota.user和aquota.group这两个文件,其中-c表示重新创建配额文件,-a扫描在/etc/mtab文件中所 有挂载的非NFS文件系统;-u计算每个用户占用的目录和文件数目,并创建aquota.user文件;-g计算每个用户组占用的目录和文件数目,并创建 aquota.group文件;-v显示命令执行过程。/etc/mtab与/etc/fstab内容类似,/etc/fstab表示系统开机时默认加载 的分区,而/etc/mtab表示目前系统加载中的分区。创建出来的aquota.user和aquota.group文件位于启用usrquota和 grpquota选项的分区所挂载的位置,如/mnt/disk。)
edquota:对用户或用户组设置磁盘配额。 (aquota.user和aquota.group文件太复杂,无法直接编辑,只能用edquotaa命令编辑。-u username设置用户的磁盘配额,-g groupname设置用户组的磁盘配额。默认情况下-u被使用。文件格式为:Filesystem blocks soft hard inodes soft hard,其中bolocks为用户已使用的空间,以块为单位,一块为1024字节,相应的inodes为已使用的i结点数。soft为软限制,当用户达 到此限制时,系统会发出警告信息,但用户仍然可以继续使用;hard为硬限制,到达此限制时用户就无法写入了。前面的soft、hard对应block的 软、硬限制,而后面的soft、hard对应inode的软、硬限制。-p复制配额设置,如edquota -p usr1 -u usr2 usr3;-t设置软时间限制。)
quota:显示磁盘已使用的空间与配额限制。(-u查看用户,为默认选项;-g查看用户组。)
quotaoff:关闭磁盘空间限制。(-a关闭所有在/etc/fstab列出的磁盘配额;-g用户组配额;-u用户配额;-p列出状态。)
quotaon:启动磁盘空间配额限制。(语法与quotaoff一样。)
quotastats:显示磁盘空间的限制。
repquota:对文件系统的磁盘配额情况进行统计。
5.4 逻辑卷管理(LVM)
LVM中相关的定义有:
物理卷(Physical volume,PV)相当于硬盘驱动器的一个标准主分区或逻辑分区;
物理盘区(Physical extent,PE)就是一块磁盘空间。物理卷被划分成多个同等大小的PE;
逻辑卷(Logical volume,LV)是LE的集合;
逻辑盘区(Logical extent,PE)和一个PE相对应,大小相同;
卷组(Volumn group,VG)是LV的集合。
pvdisplay:查看组成LVM卷的物理卷。
pvcreate:创建物理卷。(可以在硬盘上或其中某个分区上创建。)
vgcreate:创建卷组。(例:vgcreate myvolumn /dev/sdd1 /dev/sdc2。其中sdd1和sdc2都为物理卷。)
vgextend:在卷组里添加一个新的物理卷。(例:vgextend myvolumn /dev/sdd3。)
lvdisplay:查看逻辑卷。
lvcreate:创建一个逻辑卷。(例:lvcreate -l 50 myvolumn -n mylogical创建一个/dev/myvolumn/mylogical的新设备,可以用于挂载:mkfs -j /dev/myvolume/mylogical,mount -t ext3 /dev/myvolumn/mylogical /mnt/mynewdisk。-l 50表示大小为50个PE,每个PE大小可能为4.0M,而-L指定LV的size。-n指定LV的名字。)
lvextend:扩展逻辑卷。(如果有多余的PE,可以扩展逻辑卷的大小。例:lvextend -L 800M /dev/myvolumn/mylogical。)

浙公网安备 33010602011771号