1. shell提示符
默认bash shell 提示符是美元符号($),这个符号表名shell在等待用户输入。
在Ubuntu Linux系统上,shell提示符是这样的:
christine@server01:~$
在CentOS系统上是这样的:
[christine@server01 ~]$
2. bash手册
大多数Linux发行版自带用以查找shell命令及其他GNU工具信息的在线手册。man命令用来访问存储在Linux系统上的手册页面。在想要查找的工具名称前面输入man命令,就可以找到那个工具相应的手册条目。
下图就展示了查找ls命令的手册页面
手册页将与命令相关的信息分成了不同的节。每一节惯用的命名标准如表所示
3. Linux文件系统
举个例子,在Windows中经常看到这样的文件路径:
c:\Users\Rich\Documents\test.doc
这种Windows文件路径表明了文件test.doc究竟位于哪个磁盘分区中。如果你将test.doc保存在闪存上,该闪存由J来标识,那么文件的路径就是J:\test.doc。该路径表明文件位于J盘的根目录下。
Linux则采用了一种不同的方式。Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。
Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出,这点跟Windows类似。
下图是Linux目录结构:
4. 文件和目录相关命令
4.1 基本列表功能
ls命令 显示目录下的文件和目录
4.2 处理文件
- 创建空文件
touch 文件名
- 复制文件
cp source destination
- 重命名文件 / 移动文件
mv
- 删除文件
rm fileName
4.3 处理目录
- 创建目录
mkdir dirName
- 删除目录
rmdir dirName
4.4 查看文件内容
- 查看文件类型
file fieNmae
- 查看整个文件
cat fileName
- 查看部分文件(最后几行的内容)
tail fileName 最后10行
tail -n 2 fileName 最后两行
- 查看部分文件(开头几行的内容)
head fileName 前10行
head -4 fileName 前4行
5. 其他bash shell命令
5.1 监测程序
5.1.1 探查进程
ps命令能输出运行在系统上的所有程序的许多信息。但是他有数不清的参数,这让他成为了最难掌握的命令。
默认情况下,ps命令并不会提供太多的信息
使用ps命令的关键不在于记住所有可用的参数,而在于记住最有用的那些参数。大多数Linux系统管理员都有自己的一组数,他们会牢牢记住这些用来提取有用的进程信息的参数。举个例子,如果你想查看系统上运行的所有进程,可用-ef参数组合
5.1.2 实时监测进程
ps命令虽然在收集运行在系统上的进程信息时非常有用,但也有不足之处:它只能显示某个特定时间点的信息。如果想观察那些频繁换进换出的内存的进程趋势,用ps命令就不方便了。
而top命令刚好适用这种情况。top命令跟ps命令相似,能够显示进程信息,但它是实时显示的。
下图是top命令运行时输出的截图。
输出的第一部分显示的是系统的概况:第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近15分钟内的平均负载都很高,就说明系统可能有问题。
第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)
下一行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。
紧跟其后的两行说明了系统内存的状态。第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间(如果分配了的话)的状态而言的。最后一部分显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似。
5.1.3 结束进程
kill命令可通过进程ID(PID)给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。遗憾的是,你只能用进程的PID而不能用命令名,所以kill命令有时并不好用。
要发送进程信号,你必须是进程的属主或登录为root用户。
要检查kill命令是否有效,可再运行ps或top命令,看看问题进程是否已停止。
killall命令非常强大,它支持通过进程名而不是PID来结束进程。
5.2 监测磁盘空间
系统管理员的另一个重要任务就是监测系统磁盘的使用情况。不管运行的是简单的Linux台式机还是大型的Linux服务器,你都要知道还有多少空间可留给你的应用程序。
5.2.1 挂载存储媒体
- mount命令
Linux上用来挂载媒体的命令叫作mount。默认情况下,mount命令会输出当前系统上挂载的
设备列表。 - umount命令
从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。
卸载设备的命令是umount(是的,你没看错,命令名中并没有字母n)。umount命令的格式非常简单:
umount [directory | device ]
5.2.2 使用df命令
有时你需要知道在某个设备上还有多少磁盘空间。df命令可以让你很方便地查看所有已挂载磁盘的使用情况。
-h参数 它会把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。
5.2.3 使用du命令
通过df命令很容易发现哪个磁盘的存储空间快没了。系统管理员面临的下一个问题是,发生这种情况时要怎么办。
另一个有用的命令是du命令。du命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。这一方法可用来快速判断系统上某个目录下是不是有超大文件。默认情况下,du命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。对标准大小的目录来说,这个输出会是一个比较长的列表。
5.3 处理数据文件
当你有大量数据时,通常很难处理这些信息及提取有用信息。正如在上节中学习的du命令,
系统命令很容易输出过量的信息。Linux系统提供了一些命令行工具来处理大量数据。
5.3.1 排序数据
sort命令是对数据进行排序的。
默认情况下,sort命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。
5.3.2 搜索数据
grep命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。grep的输出就是包含了匹配模式的行。
$ grep three file1
three
$ grep t file1
two
three
$
- 如果要进行反向搜索(输出不匹配该模式的行),可加-v参数
- 如果要显示匹配模式的行所在的行号,可加-n参数。
- 如果只要知道有多少行含有匹配的模式,可用-c参数。
- 如果要指定多个匹配模式,可用-e参数来指定每个模式