date命令,显示当前系统的时间和日期
date
cal命令,显示当月的日历
cal
df命令,查看磁盘驱动器当前的可用空间
df
free命令,显示可用内存
free
exit命令,关闭会话终端
exit
pwd命令,查看当前工作目录
pwd
cd dir # 将工作目录改变成dir
cd # 将工作目录改变成主目录
cd - # 将工作目录改变成先前的工作目录
cd ~user # 将工作目录改变为user的主目录
ls命令,列出目录内容
ls # 列出当前工作目录的内容
ls dir # 列出目录dir的内容
ls dir1 dir2 # 列出多个目录的内容
ls -a # 列出当前工作目录的所有内容,包括隐藏目录
ls -l # 长格式列出当前工作目录的内容
ls命令其他常用选项:
-d # 列出目录本身
-h # 长格式列出,以人们可读的方式而不是字节数显示文件大小
-r # 以相反的顺序显示结果。通常,ls命令按照字母升序排列显示结果
-S # 按文件大小对结果排序
-t # 按修改时间排序
-i # 列出目录内容及其索引编号
file命令,确定文件类型
file filename
less命令,查看文本文件内容
less filename
cp命令,复制文件和目录
cp item1 item2 # 将单个文件或目录item1复制到文件或目录item2中
cp item… dir # 将多个项目(文件或目录)复制进一个目录中
cp命令常用选项:
-a # 复制文件和目录及其属性,包括所有权和权限。
-i # 在覆盖一个已存在的文件前,提示用户进行确认。默认cp会覆盖文件。
-r # 递归地复制目录及其内容。
-v # 复制文件时,线索信息行消息。
mv命令,移动或重命名文件和目录
mv item1 item2 # 将文件(或目录)item1移动到(或重命名为)item2
mv item… dir # 将一个或多个条目移动到另一个目录下。
mv命令常用选项:
-i # 在覆盖一个已存在的文件前,提示用户进行确认。默认mv会覆盖文件。
-v # 移动文件时,线索信息行消息。
mkdir命令,创建目录
mkdir dir
mkdir dir1 dir2 # 创建多个目录
rm命令,移除文件和目录
rm item…
rm命令常用选项:
-i # 删除一个已存在的文件前,提示用户确认。
-r # 递归地删除目录。
-f # 忽略不存在的文件并无需提示确认。该选项会覆盖i选项
-v # 删除文件时显示信息性消息
ln命令,创建硬链接和符号链接
ln filename linkname # 创建硬链接
ln -s filename linkname # 创建符号链接
type命令,显示命令类型
type command
例:
type ls
which命令,显示可执行命令的位置
which program
例:
which cp
man命令,显示程序的手册页
man search_item_
man section search_item
例:
man cp
man 5 passwd
man命令显示的“手册文档”被分成多个部分(section),它不仅包括用户命令,也包括系统命令、程序接口、文件格式等。下表描述来手册文档的结构安排。
部分 | 内容 |
---|---|
1 | 用户命令 |
2 | 内核系统调用的程序接口 |
3 | C库函数程序接口 |
4 | 特殊文件,如设备节点和驱动程序 |
5 | 文件格式 |
6 | 游戏和娱乐,例如屏幕保护程序 |
7 | 其他杂项 |
8 | 系统管理命令 |
apropos命令,显示一系列合适的命令
apropos命令与带k选项的man命令在功能上基本一致
info命令,显示命令的info条目
info command
例:
info ls
whatis命令,显示命令的简述
whatis command
例:
whatis ls
alias命令,使用别名创建自己的命令
alias name='string'
例:
alias foo='cd /usr; ls; cd -'
删除别名:
unalias foo
标准输出重定向
> # 覆盖目标文件内容
>> # 在目标文件尾部追加输出内容
例:
ls -l /usr/bin > ls-output.txt
> empty.txt
ls -l /usr/bin >> ls-output.txt
标准错误重定向
2> # 覆盖目标文件内容
2>> # 在目标文件尾部追加输出内容
例:
ls inexistent_dir 2> ls-error.txt
ls inexistent_dir 2>> ls-error.txt
将标准输出和标准错误重定向到同一个文件
&> # 覆盖目标文件内容
&>> # 在目标文件尾部追加输出内容
例:
ls inexistent_dir &> ls-output.txt
ls inexistent_dir &>> ls-output.txt
标准输入重定向
<
例:
cat < tmp.txt
cat命令,读取一个或多个文件,并将其复制到标注输出
cat [file…]
例:
cat f.txt
cat f1.txt f2.txt > tmpf.txt
cat > tmpf.txt # 在文件名参数缺省的情况下,cat将把标准输入内容复制到标准输出中
管道
command1 | command2
例:
date | cat
ls | sort | less
sort命令,对文本行排序
sort file
sort命令常用选项:
-u # 在输出行中去除重复行
-r # 按降序的方式排序,默认算升序的放松
-o [file] # 将排序结果输出到指定文件,可以是原文件
-f # 排序时将小写字母视为大写字母
-n # 以数值的方式排序
-b # 排序时忽略每行前面开始处的空格字符
uniq命令,报告或删除文件中重复的行
wc命令,打印文件中的换行符、单词和字节的个数
wc file…
wc命令常用选项:
-l # 打印文件的换行符的个数
-w # 打印文件的单词的个数
-c # 打印文件的字节的数
-m # 打印文件的字符的数
grep命令,打印匹配行
grep pattern [file…]
例:
grep zip f1.txt f2.txt
ls | grep zip
head命令,输出文件的第一部分内容
head file
head命令常用选项:
-n 调整输出的行数,默认是10行
例:
head tmp.txt
head -n 5 tmp.txt
tail命令,输出文件的最后一部分内容
tail file
tail命令常用选项:
-n # 调整输出的行数,默认是10行
-f # 持续监视文件,一旦添加新行,新行将会立即显示在屏幕上,按Ctrl-C后停止;这选项对观察日志文件很有用处。
tee命令,读取标准输入的数据,并将其内容输出到标准输出和文件中。
tee file…
例:
ls | tee f1.txt
clear命令,清屏
clear
history
id命令,显示用户身份标识
id # 显示当前用户的身份标识
id ~user # 显示用户user的身份标识
chmod命令,更改文件的模式
chmod mode file
例:
chmod 764 tmp.txt # 将文件的模式设置为600,即rwxrw-r--
chmod ug+x tmp.py # 为文件所有者添加可执行权限
chmod u-x tmp.py # 删除文件所有者的可执行权限
chmod +x tmp.py # 为文件所有者、所属群组和其他书友用户添加可执行权限,等价于a+x
chmod o-rw tmp.py # 除了文件所有者和所属群组之外,删除其他所有用户的读写权限
chmod go=rw tmp.txt # 如果文件所有者之外,设置所属群组和其他所有用户具有读写权限,并删除其可执行权限,如果有的话。
chmod u+x,go=rx tmp.py # 为文件所有者添加可执行权限,同时设置所属群组和其他所有用户具有读权限和可执行权限。
umask命令,设置文件的默认权限
umask # 获取当前掩码值
umask num # 设置掩码值
例:
umask 0022
su命令,以另一个用户的身份运行shell
su [-[l]] [user]
如果包含“-l”选项,那么得到的shell会话界面将是指定用户的登录shell界面。这就意味着,该指定用户的运行环境将被加载,而且工作目录也将改为指定用户的主目录。这也常常是我们想要得到的结果。如果没有指定用户,那么默认为超级用户。-l可以缩写为-,这一形式经常被使用。
在输入su命令后,系统会提示输入指定用户的密码,如果密码正确则进入指定用户的shell环境,就可以以指定用户的身份执行命令来了。使用结束时,输入exit,将返回到之前的shell环境。
例:
su -
su - huey
sudo命令,以另一个用户的身份来执行命令
sudo command
例:
sudo shutdown -h now # 以超级用户的身份执行关机命令
chown命令,更改文件的所有者
chown [ower][:group] file…
chown命令参数实例:
参数 | 结果 |
---|---|
huey | 把文件所有者从当前所有者更改为用户huey |
huey:users | 把文件所有者从但却所有者更改为用户huey,并把文件所属群组更改为users组 |
:admins | 把文件所属群组更改为admins组,文件所有者不变 |
huey: | 把文件所有者从但却所有者更改为用户huey,并把文件所属群组更改为用户huey登录系统时所属的组 |
passwd命令,更改用户密码
passwd # 修改当前用户的密码
sudo passwd user # 修改用户user的密码
ps命令,显示当前所有进程的运行情况
ps # 显示当前终端控制的进程的信息
运行结果:
PID TTY TIME CMD
5694 pts/1 00:00:00 bash
10821 pts/1 00:00:00 ps
ps x # 显示所有的进程的信息而不关注是由哪个终端所控制的。
运行结果:
PID TTY STAT TIME COMMAND
1946 ? Sl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
1957 ? Ssl 0:00 gnome-session --session=ubuntu
1988 ? Z 0:00 [lightdm-session] <defunct>
1996 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-s
1999 ? S 0:00 /usr/bin/dbus-launch --exit-with-session gnome-sessio
2034 ? S 0:19 syndaemon -i 2.0 -K -R -t
2039 ? S<l 16:23 /usr/bin/pulseaudio --start --log-target=syslog
2058 ? Sl 0:16 nm-applet
2739 ? Rl 0:25 gnome-terminal
2746 ? S 0:00 gnome-pty-helper
5694 pts/1 Ss 0:00 bash
5982 ? Sl 37:16 /usr/lib/firefox/firefox
6258 ? Sl 0:00 /usr/lib/evince/evinced
6622 ? Rl 202:51 /usr/lib/firefox/plugin-container /usr/lib/flashplugi
10731 pts/0 Ss+ 0:00 bash
10845 pts/1 R+ 0:00 ps x
...
ps aux # 显示属于每个用户的进程信息
运行结果:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3660 2036 ? Ss 08:01 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 08:01 0:00 [kthreadd]
root 12 0.0 0.0 0 0 ? S< 08:01 0:00 [cpuset]
root 27 0.0 0.0 0 0 ? SN 08:01 0:00 [ksmd]
root 561 0.0 0.0 3368 1308 ? S 08:01 0:00 /sbin/udevd --d
root 562 0.0 0.0 3384 1236 ? S 08:01 0:00 /sbin/udevd --d
syslog 784 0.0 0.0 31064 1468 ? Sl 08:01 0:03 rsyslogd -c5
avahi 948 0.0 0.0 3456 1488 ? S 08:01 0:00 avahi-daemon: r
avahi 949 0.0 0.0 3456 432 ? S 08:01 0:00 avahi-daemon: c
root 957 0.0 0.0 0 0 ? S< 08:01 0:00 [krfcommd]
root 986 0.0 0.0 4632 872 tty4 Ss+ 08:01 0:00 /sbin/getty -8
root 990 0.0 0.0 4632 860 tty5 Ss+ 08:01 0:00 /sbin/getty -8
daemon 1013 0.0 0.0 2472 348 ? Ss 08:01 0:00 atd
root 1031 0.0 0.0 34040 3128 ? Ssl 08:01 0:00 lightdm
whoopsie 1077 0.0 0.1 26016 4532 ? Ssl 08:01 0:00 whoopsie
root 1078 3.5 9.6 297660 383584 tty7 Ss+ 08:01 26:35 /usr/bin/X :0 -
mysql 1220 0.0 0.8 318728 33808 ? Ssl 08:01 0:13 /usr/sbin/mysql
root 1250 0.0 0.0 6088 2196 ? Ss 08:01 0:02 /sbin/wpa_suppl
nobody 1415 0.0 0.0 6832 1400 ? S 08:01 0:00 /usr/sbin/dnsma
colord 1813 0.0 0.2 53588 10468 ? Sl 08:01 0:00 /usr/lib/i386-l
root 1838 0.0 0.0 16460 3260 ? Sl 08:01 0:00 lightdm --sessi
rtkit 1870 0.0 0.0 21336 1248 ? SNl 08:01 0:00 /usr/lib/rtkit/
lp 3013 0.0 0.0 6228 1380 ? S 08:13 0:00 /usr/lib/cups/n
huey 5694 0.0 0.1 9208 4148 pts/1 Ss 08:21 0:00 bash
huey 6622 34.2 2.2 429188 90920 ? Sl 10:24 205:49 /usr/lib/firefo
root 6765 0.0 0.0 3316 1168 ? Ss 10:59 0:00 /sbin/mount.ntf
huey 10731 0.0 0.0 9140 3924 pts/0 Ss+ 20:09 0:00 bash
huey 10913 0.0 0.0 6368 1164 pts/1 R+ 20:26 0:00 ps aux
...
列标题含义:
USER:用户ID,表示该进程的所有者
PID:表示进程ID
%CPU:CPU使用百分比
%MEM:内存使用百分比
VSZ:虚拟耗用内存大小
RSS:实际使用的内存大小。进程使用的物理内存(RAM)大小(以KB为单位)
TTY:代表来进程的控制终端,问号表示没有终端控制
STAT:表示进程的当前状态
START:进程开启的时间。如果超过24个小时,那么将使用日期来显示
TIME:表示进程消耗的CPU时间总和
进程状态含义:
R 运行状态。进程正在运行或准备运行
S 睡眠状态。进程不在运行,而是在等待某事件的发生,如键盘输入或者收到网络报文
D 不可中断的睡眠状态,进程在等待I/O操作,如硬盘驱动
T 暂停状态。进程被指示暂停(后续还可以继续运行)
Z 无效或者“僵尸”进程。子进程被终止,但是还没有被父进程彻底释放掉
< 高优先级进程。进程可以被赋予更多的重要性,分配更多的CPU时间。
N 低优先级进程。
top命令,实时显示当前所有认为的资源占有情况
top
运行结果:
top - 20:49:15 up 12:48, 3 users, load average: 0.92, 0.84, 0.79
Tasks: 175 total, 2 running, 172 sleeping, 0 stopped, 1 zombie
Cpu(s): 26.7%us, 5.8%sy, 0.0%ni, 66.8%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3988160k total, 2354796k used, 1633364k free, 191804k buffers
Swap: 2012156k total, 0k used, 2012156k free, 910072k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6622 huey 20 0 419m 89m 28m R 34 2.3 213:59.78 plugin-containe
6251 huey 20 0 176m 73m 15m S 14 1.9 2:57.42 evince
1078 root 20 0 525m 370m 128m S 9 9.5 28:10.10 Xorg
2028 huey 20 0 282m 141m 40m S 6 3.6 10:00.86 compiz
2039 huey 9 -11 171m 5620 4028 S 2 0.1 17:01.82 pulseaudio
5982 huey 20 0 791m 291m 46m S 1 7.5 38:08.23 firefox
2034 huey 20 0 3712 800 664 S 0 0.0 0:20.58 syndaemon
11054 huey 20 0 2852 1184 892 R 0 0.0 0:00.20 top
1 root 20 0 3660 2036 1288 S 0 0.1 0:00.66 init
2 root 20 0 0 0 0 S 0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:02.55 ksoftirqd/0
6 root RT 0 0 0 0 S 0 0.0 0:01.97 migration/0
7 root RT 0 0 0 0 S 0 0.0 0:00.17 watchdog/0
8 root RT 0 0 0 0 S 0 0.0 0:02.23 migration/1
10 root 20 0 0 0 0 S 0 0.0 0:02.10 ksoftirqd/1
11 root RT 0 0 0 0 S 0 0.0 0:00.19 watchdog/1
12 root 0 -20 0 0 0 S 0 0.0 0:00.00 cpuset
...
行 | 字段 | 含义 |
---|---|---|
1 | top | 程序名 |
20:49:15 | 一天中的当前时间 | |
up 12:48 | 正常运行时间(uptime)。从机器最后一次启动开始计算的时间总数。 | |
3 users | 有3个用户已登录 | |
load average: | 负载均值(load average)指的是等待运行的进程数;即共享CPU资源的处于可运行状态的进程数。显示的三个值分别对应不同的时间段。第一个对应的是前60秒的均值,第二个对应的是前5分钟的均值,最后一个对应的前15分钟的均值。该均值小于1.0表算该机器并不忙 | |
2 | Tasks: | 统计进程数及各个进程的状态信息 |
26.7%us | 26.7%的CPU时间被用户进程占用,这里指的是处于内核外的进程 | |
5.8%sy | 5.8%的CPU时间被系统进程(内核进程)占用 | |
0.0%ni | 0.0%的CPU时间被友好进程(nice)(低优先级进程)占用 | |
66.8%id | 66.8%的CPU时间是空闲的 | |
0.7%wa | 0.7%的CPU时间用来等待I/O操作 | |
3 | Mem: | 显示物理RAM(随机存取内存)的使用情况 |
4 | Swap: | 显示交换空间(虚拟内存)的使用情况 |
job命令,列出所有活动作业的状态信息
jobs
启动一个简单的小程序xlogo作为实验对象:
xlogo
输入xlogo命令,启动xlogo程序,发现shell提示符没有返回,这是因为shell正在等待该xlogo程序结束,如果关闭xlogo窗口,那么提示符将返回。
在终端里按下Ctrl-C,将会中断一个程序,xlogo窗口将会关闭,shell提示符将返回。许多(但不是所有)命令行程序都可以使用这个方法来实现中断。
在后台运行程序:
xlogo &
命令执行后,将出现xlogo窗口,而且shell提示符也将返回,同时也会打印一些数字信息:
[1] 11203
这条信息是shell的一个称为作业控制(job control)的特性表现。表示已经启动的作业编号为1([1]),其对应的PID是11203。
执行ps命令,查看当前运行的进程:
huey@huey-K42JE:~$ ps
PID TTY TIME CMD
5694 pts/1 00:00:00 bash
11203 pts/1 00:00:00 xlogo
11204 pts/1 00:00:00 ps
使用job命令查看作业控制特性:
huey@huey-K42JE:~$ jobs
[1]+ 运行中 xlogo &
输出结果显示存在一个编号为1的作业在运行,而且对应的命令是xlogo &。
后台运行的进程不会受到任何键盘输入的影响,包括试图中断它的Ctrl-C键。想要使得进程返回到前台运行,可以使用fg命令。
huey@huey-K42JE:~/huey/linux/tmpdir$ fg %1
xlogo
在fg命令后面加上百分号和作业编号(称为jobspec选项),如果后台只有一个任务,那么可以不带jobspec选项。
如果只是想要暂停进程,而不是终止进程。按Ctrl-Z键。
huey@huey-K42JE:~$ xlogo
^Z
[1]+ 已停止 xlogo
暂停xlogo后,可以使用fg命令让进程在前台恢复运行,也可以使用bg命令让进程移到后台运行。
kill命令,发送信号给某个进程
kill [-signal] PID…
例:
kill 11565 # 向PID为11565的进程发送TERM信息
kill -1 11565 # 向PID为11565的进程发送HUP信息
kill -INT 11565 # 向PID为11565的进程发送INT信息
常用信号:
信号编号 | 信号名 | 含义 |
---|---|---|
1 | HUP | 挂起信号 |
2 | INT | 中断信号 |
3 | QUIT | 退出信号 |
9 | KILL | 杀死信号 |
11 | SEGV | 段错误信号 |
15 | TERM | 终止信号,kill命令默认发送的信号类型 |
18 | CONT | 继续运行信号,恢复之前接受了STOP信号的进程 |
19 | STOP | 暂停信号 |
注:
和文件一样,进程也有所有者,只有进程的所有者(或者超级用户)才能使用kill命令来给它放送信号。
killall命令,发送信号给多个进程
killall [- u user] [-signal] name…
例:
huey@huey-K42JE:~$ xlogo &
[1] 11565
huey@huey-K42JE:~$ xlogo &
[2] 11673
huey@huey-K42JE:~$ killall xlogo
[1]- 已终止 xlogo
[2]+ 已终止 xlogo
shutdown命令常用选项:
-c # 取消前一个shutdown命令
-h # 将系统关机
-r # shutdown之后重新启动。
shutdown命令格式:
精确时间格式:hh:mm
时间段格式:+和分钟数
例:
# 指定现在立即关机
shutdown -h now
# 指定23:30时关机并马上重新启动系统
shutdown -r 23:30
# 指定10分钟后关机,并向所有所有登入用户传送信息
shutdown -h +10 'System wiil shutdwon after 10 minutes!'