用户管理
一些细节
root 用户为根用户,也就是 系统管理员 拥有全部权限
一个用户只能拥有一个 GID ,但是还可以归属于其它附加群组
用户管理的重要配置文件:
/etc/passwd 用户名 密码位 UID 归属GID 姓名 $HOME目录 登录Shell
/etc/shadow 用户名 已加密密码 密码改动信息 密码策略
/etc/group 群组名 密码位 GID 组内用户
/etc/gshadow 群组密码相关文件,不重要
/etc/sudoers 用户名 权限定义 权限
可以使用 pwconv 命令创建影子密码,将 /etc/passwd 文件中的密码转换到 /etc/shadow 文件
su [用户名]
切换到其它用户,默认切换到root用户。提示密码为将切换用户密码
-f 快速切换,忽略配置文件 -l 重新登录 -m ,-p 不更改环境变量
-c <命令> 切换后执行命令,并退出切换
sudo [命令]
以其它用户的身份执行命令,默认以root的身份执行。提示密码为当前用户密码
-s 切换为root shell -i 切换为root shell,并初始化 -u <用户名|UID> 执行命令的身份
-l 显示自己的权限
passwd [用户名]
设定用户密码
-d 清除密码 -l 锁定用户 -e 使密码过期,在下次登录时更改密码
-S 显示密码认证信息 -x <天数> 密码过期,最大使用时间
-n <天数> 冻结密码,最小使用时间 -s 更改登录Shell -f 更改用户信息
示例:
$passwd
Changing password for user
(current) UNIX password: 原密码
Enter new UNIX password: 新密码
Retype new UNIX password: 确认新密码
chsh [-s <Shell>] [用户名]
更改登录Shell
usermod <用户名>
修改用户账号
-d <目录> 设定$HOME目录 -m 设定$HOME目录时自动建立
-s <Shell> 修改用户登录Shell -l <新用户名> 修改为新用户名
-u <UID> 修改用户UID -g <群组名> 修改用户归属群组
-G <群组名> 修改用户归属附加群组 -L 锁定帐户 -U 解除锁定
-e <过期时间> 设定用户账号过期时间 -f <缓冲天数> 设定密码过期后多长时间关闭账号
-c <字符串> 修改用户备注
useradd <用户名>
新建用户
-d <目录> 设定$HOME目录 -m 自动建立$HOME目录 -M 不自动建立$HOME目录
-s <Shell> 修改用户登录Shell -l <用户名> 修改为新用户名 -u <UID> 修改用户UID
-g <群组名> 修改用户归属群组 -G <群组名> 修改用户归属附加群组
-n 不建立以用户名为名称的群组 -e <过期时间> 设定用户账号过期时间
-f <缓冲天数> 设定密码过期后多长时间关闭账号 -c <字符串> 修改用户备注
-D [表达式] 更改预设值 (预设值保存于 /etc/default/useradd 文件中)
新建用户规则保存于 /etc/login.defs 文件中
新建用户默认文件保存于 /etc/skel/ 目录中。新建用户时,系统自动拷贝此目录下的文件至新建用户的 $HOME 目录
userdel <用户名>
删除用户
-r 删除用户相关文件和目录
id [用户名]
显示用户 UID GID 归属附加群组
finger [用户名]
显示用户信息
进程管理
一些细节
进程一般分为交互进程、批处理进程和守护进程三类。
守护进程总是活跃,在系统启动时通过脚本自动启动,或由root启动,通常在后台运行。
一个进程可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。
init 进程为根进程,所有进程都是它的子进程
ps
显示进程信息,参数可省略 -
aux 以BSD风格显示进程(常用) -efH 以System V风格显示进程
-e , -A 显示所有进程 a 显示终端上所有用户的进程 x 显示无终端进程
u 显示详细信息 f 树状显示 w 完整显示信息 l 显示长列表
示例:
ps alx 另一种常用输出格式
ps aux | less 将输出通过管道,使用 less 查看
ps aux | grep <关键字> 通过关键字查找进程
输出字段
USER 进程所有者 PID 进程ID PPID 父进程 %CPU CPU占用率
%MEM 内存占用率 NI 进程优先级。数值越大,占用CPU时间越少 VSZ 进程虚拟大小
RSS 页面文件占用 TTY 终端ID STAT 进程状态
D 不可中断 Uninterruptible sleep (usually IO) R 正在运行,或在队列中的进程
S 处于休眠状态 T 停止或被追踪 Z 僵尸进程
W 进入内存交换(从内核2.6开始无效) X 死掉的进程 < 高优先级 N 低优先级
L 有些页被锁进内存 s 包含子进程 + 位于后台的进程组;
l 多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
pstree
树状显示进程信息
-a 显示完整命令及参数 -c 重复进程分别显示 -c 显示进程ID PID -n 按 PID 排列进程
pgrep <进程名>
显示进程的PID
-l 显示进程名和进程PID -o 进程起始ID -n 进程终止ID
xkill
在图形界面中点杀进程。执行此命令后,鼠标指针变为骷髅图案(一定看过《加勒比海盗》吧)。在窗口中点击左键杀死进程,右键取消
pkill <进程名>
结束进程族。如果结束单个进程,请用 kill
kill [信号代码] <进程PID>
根据PID向进程发送信号,常用来结束进程,默认信号为 -9
-l [信号数字] 显示、翻译信号代码
-9 , -KILL 发送 kill 信号退出
-6 , -ABRT 发送 abort 信号退出
-15 , -TERM 发送 Termination 信号
-1 , -HUP 挂起
-2 , -INT 从键盘中断,相当于 Ctrl+c
-3 , -QUIT 从键盘退出,相当于 Ctrl+d
-4 , -ILL 非法指令
-11 , -SEGV 内存错误
-13 , -PIPE 破坏管道
-14 , -ALRM
-STOP 停止进程,但不结束
-CONT 继续运行已停止的进程
-9 -1 结束当前用户的所有进程
renice <优先级表达式> <进程表达式>
重新设定进程优先级(无此必要)
优先级表达式:
+|-|= <nice值>
nice取值范围: -20~19
进程表达式:
-p <PID> 通过进程ID进行设定
-g <PGID> 通过进程群组ID
-u <UID> 通过进程拥有者UID设定
top
动态、交互式进程管理器
-c 显示进程启动状态,包括参数、操作对象等;而不只是进程名
-d <秒> 刷新频率。 -d 5,表示5秒刷新一次
-n <次> 刷新次数,然后退出。 -n 5,表示刷新5次后退出;
-b 以批量模式运行,让输出能够使用管道或重定向。但不能进行交互,最好和 -n <次> 参数一同使用
-i 禁止显示空闲进程或僵尸进程;
-p PID 仅监视指定进程的ID;PID是一个数值;
-s 安全模式运行,禁用一些效互指令;
-S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;
交互命令:
<space> 立即刷新
k 交互式杀死进程,提示输入进程 PID (默认发送信号15)
r 设定renice,提示输入PID和renice值
s 改变两次刷新时间间隔,以秒为单位
n 设定显示进程数, 0 为不作限制
i 隐藏空闲进程和僵尸进程
S 切换到累积时间模式
l 开关,在顶部显示 uptime 信息
t 开关,在顶部显示 进程和CPU状态
m 开关,在顶部显示 free 信息
c 显示方式切换: 进程名/进程启动状态
A 按进程启动顺序进行排序。由新到旧
M 按内存占用排序。由大到小
N 以进程ID排序。由大到小
P 按CPU占用排序。由大到小
T 按时间/累积时间排序
f ,F 设定显示字段。设定完成后空格退出
o,O 设定显示字段的排序。大写向前移动,小写向后移动,空格退出
h,? 显示有关安全模式和累积模式的帮助信息
W 把当前的配置写到~/.toprc中;
nohup <命令>
将任务提交到后台,输出附加到 ~/nohup.out 文件。即便用户退出登录,提交的命令仍继续执行。
<命令> &
背景执行此命令,如果用户退出登录,则命令停止执行
<命令1> ; <命令2> ; ......
命令队列,从左向右,依次执行以 ; 分隔的命令
<命令1> && <命令2> && ......
命令队列,从左向右,依次执行以 && 分隔的命令。前一个命令执行成功,后一个命令才能执行
<命令> <Ctrl+z>
<Ctrl+z> 挂起当前Shell中的任务
jobs
显示背景任务
bg [任务编号]
将挂起的任务背景执行
fg [任务编号]
将背景任务调到前台执行
计划任务
磁盘和内存管理
一些细节
Linux中,设备用/dev/目录下的文件表示。例如
/dev/hda1 第一块硬盘的第一主分区
/dev/hdb5 第二块硬盘的第一逻辑分区
/dev/sda4 第一块SATA硬盘的第四主分区,或者扩展分区
/dev/null 黑洞设备
关于磁盘设备,详见 分区概念
mount <设备文件> [挂载路径]
挂载文件系统
-t 指定文件系统的类型。通常不必指定,mount自动检测。下面是常用的格式
reiserfs ReiserFS 3.6版
jfs IBM技术
xfs SGI技术(适合高级服务器,桌面用户慎用)
ext3 Linux传统文件系统
vfat fat fat32
ext2 不带日志的ext3
ntfs WINNT
iso9660 光盘
smbfs Windows文件共享
-o [选项1] [选项2] ......
loop 环设备。光盘、ISO镜像等
ro | rw 只读readonly;可读写read-write
sync | async 同步模式|异步模式。决定修改是否立即写入文件系统
atime | noattime 读取时是否修改访问时间。对于写入敏感设备,例如闪存、软盘,建议使用 *noatime*
auto | noauto 自动挂载模式
exec | noexec 是否允许可执行权限
defaults 使用预设的选项 rw, suid, dev, exec, auto, nouser, async
iocharset=UTF-8 指定字符集,可简写为 utf8
codepage=936 指定代码页,可简写为 cp936 西文系统代码页为 437
umask=<权限掩码> 设定权限掩码
uid=<UID> 设定归属用户
gid=<GID> 设定归属群组
remount 以不同选项重新挂载
-L <卷标> 将带有特殊卷标的分区
Tip
权限掩码
权限=777-权限掩码(三位) | 7777-权限掩码(四位)
假如权限掩码为 022 ,则新建对象权限为 755 rwxr-xr-x
可以使用 umask 命令设置权限掩码
mount -a
挂载 /etc/fstab 文件中定义的所有设备
示例:
sudo mount -t iso9660 -o loop /dev/cdrom0 /media/cdrom
sudo mount -t vfat -o remount iocharset=utf8,codepage=cp936 /dev/hda5 /media/hda5
umount <设备文件> | <挂载路径>
卸载已挂载文件系统
df
查看已挂载文件系统的磁盘空间占用
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统
-T 显示文件系统类型 -k 以k字节为单位显示 -i 显示i节点信息,而不是磁盘块
-t <文件系统类型> 显示指定类型的文件系统的磁盘空间使用情况
-x <文件系统类型> 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-l 只显示本地文件系统
free
查看内存、缓冲区、交换空间的占用
-b 以字节为单位显示数值 -k 以千字节为单位显示数值 -m 以兆字节为单位显示数值
-g 以吉字节为单位显示数值 -l 显示内存占用峰值 -o 不显示缓冲区占用 -t 统计结果
-s <秒> 刷新频率
sync
同步文件系统。将缓冲区中的数据写入文件系统
fdisk <磁盘设备文件>
分区表修改工具
交互命令:
m 使用帮助 l 查看已知文件系统类型 p 显示分区信息
n 新建分区 (p:主分区 l:扩展分区 参见 分区概念 ) d 删除分区 t 改变分区类型
w 将改动写入分区表 q 放弃改动并退出
* 磁盘设备名称为整块磁盘,而不是磁盘中的分区。例如 /dev/hda ,而不是 /dev/hda1
fdisk -l
查看所有磁盘分区信息
cfdisk
更加友善的分区表修改工具
mkfs.<文件系统类型> <分区设备文件>
将分区格式化为文件系统。 文件系统类型
示例:
sudo mkfs.reiserfs /dev/hda1
mkfs <分区设备文件>
-t <文件系统类型> 指定文件系统类型 -c 格式化前检查磁盘
mkisofs -o <镜像文件> [源文件目录]
用光盘或者文件制作iso镜像
-b 可启动镜像
hdparm <磁盘设备文件>
设置硬盘参数
-d <0|1> DMA模式开关 -a <0|1> 预计模式开关 -t 性能测试 -T 缓存性能测试
-c <0|1|3> 32位传输模式开关 -g 显示柱面,扇区等信息 -i -I 显示磁盘信息
网络和硬件管理
ifconfig
配置网络接口
-a 显示所有网络接口
ifconfig <网卡> up|down
激活|禁用网卡
示例: ::
sudo ifconfig eth0 up
ifconfig <网卡> add <IP地址> [ netmask <子网掩码> ]
给网卡指定IP地址或子网掩码
route
配置路由及网关
route add -net <路由地址> gw <网关地址> [ netmask <子网掩码> ] dev <网卡>
指定路由及网关
route del -net <网关地址> gw <网关地址> [ netmask <子网掩码> ]
删除路由及网关
ip
配置网络
子命令:
link 网卡配置 address 配置地址。相当于 ifconfig route 配置路由。相当于 route
参数:
show 显示(默认) set 设置 add 添加 del 删除
示例:
ip link show 显示网卡配置
ip link set eth0 name xxx 重命名网络接口
ping <IP地址>
向目标地址发送ICMP封包,常用来测试网络
-b <广播地址> ping整个网段 -c 发送封包次数 -s <封包大小> 默认为64字节
netstat
网络连接状态
-r 显示路由表,同 route -a 所有连接 -t 只显示TCP协议 -U 只显示UDP协议
-l 只显示正在监听的端口 -p 显示PID和进程名 -c <秒> 刷新频率
* http/ftp/ssh…… 为应用层协议 * TCP/UDP为传输层协议 * IP/ICMP为网络层协议
lspci
查看PCI总线连接的设备
lsusb
查看USB接口连接的设备
lsmod
查看已加载模块
* /lib/modules/uname -r 目录下为所有可用模块
modprobe <模块名称>