bash shell
/etc/password文件包含了所有系统用户账户列表及每个用户的基本配置信息
christine:*:-2:-2:Unprivileged User:/var/empty:/bin/bash
root:*:0:0:System Administrator:/var/root:/bin/sh
每个条目7个字段,用冒号分隔,最后一个字段指定了用户使用的shell程序。
christine使用/bin/bash作为自己的默认shell程序,当christine登录Linux系统后,bash shell会自动启动。
root使用/bin/sh,执行*/bin/sh -version*,可能会得到如图,仍为bash shell

shell提示符是美元符号$,表明shell在等待用户输入。输入命令、回车运行。
man命令访问bash手册,如man ls,空格翻页,回车逐行查看,箭头滚动,q键退出手册。
Linux文件系统
Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录virtual directory。虚拟目录将PC上的所有存储设备的文件路径纳入单个目录结构中。
Linux虚拟目录结构只包含一个称为根root目录的基础目录。
路径本身不提供任何有关文件存放在哪个物理磁盘上的信息。
LinuxPC上的第一块硬盘称为根驱动器,包含了虚拟目录的核心,其他目录都是从那里开始构建。
挂载点,mount point,是虚拟目录中用于分配额外存储设备的目录,挂载点创建于根驱动器。
比如如果有两块硬盘,就可以一个和根目录/关联,另一个可以挂载到/home,即用户目录。
| 目录 | 用途 |
|---|---|
| / | 根目录 |
| /bin | 二进制目录,存放用户级GNU工具 |
| /boot | 启动目录,存放启动文件 |
| /dev | 设备目录,Linux在此创建设备节点 |
| /etc | 系统配置文件目录 |
| /home | 主目录,用户目录 |
| /lib | 库目录,系统和应用程序的库文件 |
| /media | 媒体目录,可移动媒体设备常用挂载点 |
| /mnt | 挂载目录,可移动媒体设备常用挂载点 |
| /opt | 可选目录,存放第三方软件包和数据文件 |
| /proc | 进程目录,存放现有硬件及当前进程的相关信息 |
| /root | root用户的主目录 |
| /sbin | 系统二进制目录,GNU管理员级工具 |
| /run | 运行目录,系统运作时的运行时数据 |
| /srv | 服务目录,本地服务的相关文件 |
| /sys | 系统目录,系统硬件信息的相关文件 |
| /tmp | 临时目录,在此创建、删除临时工作文件 |
| /usr | 用户二进制目录,用户级GNU工具和数据文件 |
| /var | 可变目录,经常变化的文件,如日志文件 |
处理文件、目录的命令
cd destination 切换到destination
cd ~ 等价于 cd
cd /usr/bin 绝对文件路径
cd Documents 相对路径
. 当前目录
.. 当前目录的父目录
pwd 打印当前工作目录
ls 打印当前目录下的文件和目录,LS_COLORS环境变量控制不同颜色区分不同类型文件
ls -F 区分文件和目录
ls -a 将隐藏文件也打印出来,
ls -R 递归打印子目录的文件
ls -FR 递归打印子目录,区分文件和目录,是-F和-R的合并
ls -l 显示每个文件的附加信息,第一行显示目录中包含的总块数,之后每行包含:文件类型(目录d,文件-,字符型文件c,块设备b),权限,硬链接总数,属主用户名,属组的组名,文件大小(字节),上次修改时间,文件名
ls my_script my_script是一个过滤器,只打印匹配my_script这个字符串的文件
ls my_scr?pt ?代表一个字符
ls my* *代表零个或多个字符
ls my_scr[ai]pt 使用a或i,中括号[]代表任一字符
ls my_scr[a-z]pt 使用字母范围
ls f[!a]ll 匹配f?ll,除了fall
touch test_one 创建空文件test_one
touch test_one 改变文件的修改时间,但不改变文件的内容
touch -a test_one 只改变访问时间:-a参数
ls -l --time=atime test_one 使ls -l打印出的不是默认的修改时间,而是访问时间
cp src dest 当src和dest都是文件名时,将src复制成dest,有新的修改时间
cp -i src dest -i选项会询问是否需要覆盖已有文件
cp -R scripts/ mod_scripts 将scripts目录的内容递归复制到mod_scripts,若mod_scripts不存在,则创建mod_scripts目录
cp *script mod_scripts/ 通配符,将script结尾的文件复制到mod_scripts目录
制表键Tab自动补全
mv fall fzll 将fall重命名为fzll,但inode编号和时间戳不变,mv只影响文件名
mv fzll pictures/ 将文件fzll移动到pictures目录下,同样不改变inode编号和时间戳
mv fzll pictures/fall 同时移动位置和重命名
rm fall 删除fall
rm -i fall -i参数提示是否确实删除fall
rm -i f?ll 删除fall,fill,fell等文件
rm -f fall -f参数强制删除
mkdir new_dir 创建new_dir目录
mkdir -p new_dir/sub_dir/under_dir 批量创建多级目录,含子目录
rmdir new_dir 删除目录new_dir,new_dir只能是空目录
rm -r new_dir -R或-r参数,递归删除new_dir及其中的文件和子目录
rm -rf tmp_dir 一次性删除tmp_dir,慎重使用
file my_file 查看文件或目录类型
file sl_data_file 查看符号链接类型,链接到哪个文件上
cat my_file 显示my_file中所有数据
cat -n my_file 显示文件内容,并加上行号
cat -b my_file 显示文件内容,给有文本的行加上行号
more my_file 逐页显示文件内容,回车换行,空格翻页,q键退出
less my_file 与more类似
tail my_file 默认显示文件最后10行
tail -n 5 my_file 显示最后5行
tail -5 my_file 同上,显示最后5行
tail -f my_file 在其他进程使用文件时查看文件的内容,-f参数使tail命令保持活动状态,不断显示添加到文件中的内容,即实时监测
head my_file 默认显示文件前10行
head -n 5 my_file 显示前5行
head -5 my_file 同上,显示前5行
链接文件
如需要在系统维护同一文件的多份副本,或者保存多份单独的物理文件副本,或者保存一份物理文件副本和多个虚拟副本。虚拟副本称为链接,是目录中指向文件真实位置的占位符。
Linux中有两种文件链接:
符号链接
一个实实在在的文件,指向存放在虚拟目录结构中的另一个文件,通过符号链接在一起,彼此内容并不相同,符号链接文件和原文件是两个完全不同的文件。
ln -s src_file sl_src_file 使用ln -s为src_file创建符号链接,src_file文件必须事先存在。
ls -i *src_file 可以查看文件的inode编号,符号链接和原文件的inode不同
硬链接
硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置,本质上是同一个文件。
ln src_file hl_src_file 使用ln为src_file创建硬链接,不需要额外参数,
ls -i *src_file 查看文件的inode编号,硬链接和原文件的inode相同
管理进程
查看进程——ps
ps ps默认只显示运行在当前控制台下的属于当前用户的进程,包括进程ID(PID),运行在哪个终端(TTY),进程已用的cpu时间(TIME)
ps -ef 查看系统上运行的所有进程,-e参数显示所有进程,-f参数显示完整个数的输出,破折号-风格的参数是Unix风格的参数。-f参数输出的信息包括:UID——启动进程的用户,PID——进程ID,PPID——父进程ID,C——进程生命周期中的CPU利用率,STIME——进程启动时的系统时间,TTY——进程启动时的终端设备,TIME——运行进程需要的累计CPU时间,CMD——进程名称
ps -l 输出更多信息,更长的格式
监控——top
ps只能显示某一时刻的信息,top则是实时显示
top命令的输出如下图:

- 第一行:当前时间,系统运行时间,登录用户数,系统平均负载
- 显示的平均负载有三个值:最近1分钟的,最近5分钟的,最近15分钟的平均负载,值越大负载越高
- 第二行:有多少进程(任务Task)处于运行、休眠、停止、僵化状态
- 第三行:CPU信息
- 第四行:系统物理内存,总共多少,用了多少,空闲多少
- 第五行:交换空间的相应信息
- 之后是进程的详细列表,与ps输出类似
top运行时键入q退出,f选择对输出进行排序的字段,d 修改轮询间隔
结束进程——kill
Linux进程之间通过信号来通信,标准Linux进程信号如下:
| 信号 | 名称 | 描述 |
|---|---|---|
| 1 | HUP | 挂起 |
| 2 | INT | 中断 |
| 3 | QUIT | 结束运行 |
| 9 | KILL | 无条件终止 |
| 11 | SEGV | 段错误 |
| 15 | TERM | 尽可能终止 |
| 17 | STOP | 无条件停止运行,但不终止 |
| 18 | TSTP | 停止或暂停,但继续在后台运行 |
| 19 | CONT | 在STOP或TSTP之后恢复执行 |
kill 3940 终止进程ID3940,默认发送TERM命令
kill -9 3940 强制终止3940
kill -s HUP 3940 挂起3940
killall http* 结束所有以http开头的进程,即killall支持进程名
监测磁盘
挂载磁盘——mount、umount
挂载:将新的存储媒介放到虚拟目录下,使用mount命令进行手动挂载。移除一个可移动设备时,也要先卸载。
mount命令的输出:媒体的设备文件名,媒体挂载到虚拟目录的挂载点,文件系统类型,已挂载媒体的访问状态

mount 默认输出当前系统上挂载的设备列表
mount -t type device directory 只能是root用户,type参数指定磁盘被格式化的文件系统类型
mount -t vfat /dev/sdb1 /media/disk 手动将/dev/sdb1挂载到/media/disk
umount [directory|device] 卸载,指定directory或device
查看磁盘——df
df命令显示每个有数据的已挂载文件系统。输出格式:设备文件位置,1024字节的块能容纳多少、已用多少、还有多少可用,已用空间百分比,设备的挂载点。

df 查看所有已挂载磁盘的使用情况
df -h -h参数使输出易读
查看目录使用空间——du
du的输出有两列,左列输出每个文件、目录占用的磁盘块数,右列为其路径。-c选项显示已列出文件总大小,-s选项只显示总计,-c选项除标准输出还会显示文件的总大小,-h选项使输出易读。
du
du . 同上,打印当前目录下所有文件、子目录占用磁盘情况,用于判断某个目录下是不是有超大文件
处理文件
排序数据——sort
sort默认将文件中的数据排序,把数字当作字符参与排序。-n选项告诉sort把数字识别成字符。-M选项告诉sort识别三字符的月份名,使得Apr不会错误地排在Jan前面。其他参数:
| 单破折线 | 双破折线 | 描述 |
|---|---|---|
| -b | –ignore-leading-blanks | 排序时忽略起始的空白 |
| -C | –check==quiet | 不排序,如果数据无序也不要报告 |
| -c | –check | 不排序,检查输入是不是已排序,如未排序则报告 |
| -d | –dictionary-order | 仅考虑空白和字母,不考虑特殊字符 |
| -f | –ignore-case | 忽略大小写(默认大写字母在前) |
| -g | –general-number-sort | 按通用数值排序 |
| -i | –ignore-nonprinting | 排序时忽略不可打印字符 |
| -k | –key=POS1[,POS2] | 排序从POS1位置开始,如指定了POS2则到POS2位置结束 |
| -M | –month-sort | 用三字符月份名按月排序 |
| -m | –merge | 将两个已排序数据文件合并 |
| -n | –numeric-sort | 按数值排序 |
| -o | –output=file_name | 将排序结果写入file_name文件 |
| -R | –random-sort | 按随机生成的散列表的键值排序 |
| -r | –reverse | 倒序排序 |
| -S | –buffer-size=SIZE | 指定使用的内存大小 |
| -s | –stable | 禁用最后重排序比较 |
| -T | –temporary-directory=DIR | 指定存储临时工作文件的目录 |
| -t | –field-separator=SEP | 指定区分键位置的字符 |
| -u | –unique | 与-c联用时检查严格排序;不和-c联用时仅输出第一例相似的两行(?) |
| -z | –zero-terminated | 用NULL字符作为行尾,而不是用换行符 |
sort -n file1
搜索数据——grep
grep命令会在输入或指定的文件中查找匹配模式字符串的行,并输出。
grep [option] pattern [my_file]
grep t file1 在file1中搜索匹配模式t的文本
grep -v t file1 -v参数反向搜索,输出不匹配模式t的行
grep -n t file1 -n参数显示匹配行的行号
grep -c t file1 -c参数统计匹配的行数
grep -e t -e f file1 -e参数允许指定多个匹配模式,输出匹配t或f的所有行
grep [tf] file1 搜索匹配t或f的行
压缩数据——gzip
gzip软件包含有下列工具:
gzip:压缩文件
gzcat:查看压缩过的文本文件的内容
gunzip:解压文件
gzip myprog 将myprog压缩,扩展名为.gz
gzip my* 使用通配符压缩多个文件
归档数据——tar
tar命令的格式:
tar function [options] object1 object2 ...
function指定tar应该做什么:
| 功能 | 长名称 | 描述 |
|---|---|---|
| -A | –concatenate | 将一个已有tar归档文件追加到另一个已有tar文件 |
| -c | –create | 创建新的tar文件 |
| -d | –diff | 检查归档文件和文件系统的不同 |
| -d | –delete | 从已有tar文件中删除 |
| -r | –append | 追加文件到已有tar文件末尾 |
| -t | –list | 列出tar文件的内容 |
| -u | –update | 将比tar文件中已有同名文件更新的文件追加到tar文件中 |
| -x | –extract | 从已有tar文件中提取文件 |
与tar命令一起常用的选项:
| 选项 | 描述 |
|---|---|
| -C dir | 切换到指定目录 |
| -f file | 输出结果到文件 |
| -j | 将输出重定向给bzip2来压缩 |
| -p | 保留所有文件权限 |
| -v | 在处理文件时显示文件 |
| -z | 将输出重定向给gzip来压缩 |
tar -cvf test.tar test/ test2/ 创建tar文件test.tar,含有test和test2两个目录
tar -tf test.tar 列出tar文件test.tar的内容
tar -xvf test.tar 提取test.tar中的内容
tar -zxvf test.tgz 解压test.tgz文件,常用
本文深入讲解Linux系统管理,包括文件系统结构、基本命令操作、进程管理、磁盘挂载、文件压缩与归档等核心技能。
5331

被折叠的 条评论
为什么被折叠?



