原文地址:
https://blog.csdn.net/haima95/article/details/81287049
第1章 Linux概述
1 常用的国内Linux资源
www.chinaunix.net : 国内最大的Linux/UNIX技术社区网站
www.linuxeden.com : Linux伊甸园,最大的中文开源资讯门户网站
www.linuxfans.org : 中国Linux公社,拥有自己的Linux发行版本Magic Linux
www.linuxsir.org : 提供Linux各种资源,包括资讯,软件,手册等
第2章 Linux安装
1 书中推荐的虚拟机为VMware。VMware面向企业和个人开发了多个版本,其中一些需要用户购买许可证,如VMware Workstation等。VMware Server则可以免费使用。推荐使用VMare Server。
第3章 Linux基本配置
1 用户可以执行不带参数的su命令将自己提升为root权限,另一个命令行工具是sudo,它可以临时使用root身份运行一个程序,并在程序执行完毕后返回至普通用户状态。
第4章 桌面环境
略
第5章 Shell基本命令
1 Linux的命令和文件名都是区分大小写的
2 使用tab键,点击一次,如果以已键入的字符开头的文件只有一个,Shell会自动把文件名补全。如果不止一个,需要点击2次tab键,Shell会罗列出所有以已键入的字符开头的文件
3 Shell的通配符,有 " * " , " ? " , " [ ] " 三种
星号( * ) 匹配任意长度的字符串
问号( ? ) 匹配一个字符
括号( [ ] ) 匹配所有出现在方括号内的字符,如 ls text[1-3] 显示text1,text2和text3
4 命令pwd显示当前目录
5 回到用户主目录可以用命令单单一个cd 或 cd ~
6 命令 ls -F 里 -F选项会在每个目录后面加上/,可执行文件后加*,链接文件后加@。如下
7 命令ls -a 则显示该目录下所有文件,包括隐藏文件
8 命令 ls -l 查看文件的各种属性
注:属性从左往右:文件的权限标志,文件的链接个数,文件所有者的用户名,该用户所在的用户组组名,文件的大小,最后一次被修改的日期,最后一次被修改的时间,文件名
9 查看文本文件:cat和more
cat 命令用于查看文件内容,后面跟文件名作为参数,也可以多个文件名作为参数,也可以使用通配符。如果加上-n选项则会在每一行前显示行数,如 cat -n xxx.txt
cat命令是将所有内容全部显示在屏幕上,但more命令是一页页显示。按下空格键向下翻一页,按Enter键向下滚动一行,按Q键退出。
10 阅读文件的开头和结尾:head和tail。可以再使用-n选项指定显示的行数,如下
head -n 2 xxx.txt ## 显示头两行
tail -n 2 xxx.txt ## 显示结尾两行
11 查找文件内容: grep,如果要搜索带空格的内容,可以用引号把搜索的内容包含进去
12 快速定位文件:locate
13 搜索:find
14 whereis命令查找程序文件,并提供这个文件的二进制可执行文件,源代码文件和使用手册页存放的位置
15 who 查看当前系统中有哪些帐号登录
16 man命令,寻求帮助,如man find
第6章 文件目录管理
1 和团队共享文件
创建一个用户组,将相关成员加入
创建一个目录,设置权限
将目录交给组长
2 创建目录:mkdir
mkdir document picture ## 同时新建document,picture两个目录
mkdir -p ~/tempex/job ## -p选项可以保证如果tempex目录本身不存在,会一起创建
3 touch命令创建的文件是个空文件,另外也可以用来更新一个文件的建立日期和时间,这种功能在自动备份和整理文件时非常有用。
4 mv可以在移动文件和目录同时对其重命名,加 -i 选项会有确认提醒
5 cp命令用来复制文件和目录,加 -i 选项会有确认提醒,加 -r 选项会将子目录连同其中的文件一起复制到另一个目录中
6 rmdir命令用于删除目录,但只能删除空目录。rm可以删除目录和文件,加 -i 选项会有确认提醒,加 -r 选项会将子目录连同其中的文件一起删除,加 -f 选项则避免每个文件删除的确认提醒等交互式操作。
7 文件/目录的权限样式如"-rwxr-xr-x" ,第一个字符表示文件类型,rwxr-xr-x是三组权限位,分别为属主(rwx),属组(r-x)和其他人(r-x)。
8 查看目录的权限可以使用 ls -ld /xxx/
9 chown命令改变文件的所有权,如下
sudo chown yyy:root in.txt // 修改属主为yyy,属组为root
sudo chown yyy in.txt // 只修改属主为yyy
sudo chown :root in.txt // 只修改属组为root
sudo chown -R yyy dac // 修改子目录及其的所有文件属主为yyy
10 chgrp命令只能修改文件的属组所有权
11 chmod命令修改一个文件的权限,命令使用"用户组+/-权限"的表达方式来增加/删除相应的权限。也可以通过“用户组=权限”的规则直接设置文件权限。也可以通过“用户组1=用户组2”将用户组1的权限设置跟用户组2一样。用户组包括属主(u),属组(g),其他人(o)和所有人(a),权限包含读(r),写(w)和执行(x),如下
chmod u+x in.txt // 给属主开通执行的权限
chmod a-x in.txt // 给所有人删除执行权限
chmod ug=rw , o=r in.txt // 给属主和属组读写权限,其他人读的权限
chmod o=u in.txt // 将其他人的权限设置为跟属主一样
12 文件权限的八进制表示,如 711 表示 rwx--x--x
13 文件类型,-表示普通文件,d表示目录,c表示字符设备文件,b表示块设备文件,s表示本地域套接口,p表示有名管道,l表示符号链接
14 符号链接(软连接)需要使用带-s参数的ln命令来创建,如下
ln -s TARGET LINK_NAME // 给目标文件TARGET取了一个别名LINK_NAME
ln -s days my_days // 建立一个名为my_days的符号链接指向文本文件days
ln -s /usr/local/share/ local_share // 建立一个名为local_share的符号链接指向目录/usr/local/share
还有一种硬链接,它跟符号链接的区别在于:硬链接是直接引用,即修改硬链接内容也会影响源内容。符号链接则通过名称进行引用。使用不带选项的ln命令就是建立硬链接。
ln -s days hard_days // 建立一个链接到days的新文件hard_days,硬链接
15 输出重定向
ls > ~/ls_out ## 将输出内容输入到~/ls_out文件中 ## 如果ls_out不存在,输出重定向符" > " 会创建该文件,如果存在则删除原有内容,用新内容替代
注:如果不想覆盖文件原有内容,可使用输出重定向符" >> "。
16 cat命令会将用户的每行输入会立即显示在屏幕上,直到使用Ctrl+D快捷键来结束,如下
17 通过使用输入重定向符号" < " 可以让程序从一个文件中获取输入 ,如 $ cat < data.txt。cat命令可以通过接受参数来显示文件内容,如 $ cat data.txt
18 另一种输入重定向的例子为立即文档,使用操作符" << ",立即文档指定一个代表输入结束的分隔符,但shell遇到这个分隔符后就结束输入,如下
$ cat << a
> d
> dfd
> dfd
> aaa
> a ### 结束分隔符
d
dfd
dfd
aaa
$ cat << END > hello
> Hello World !
> ok
> END
19 管道( | )将一条命令的输出连接到另一条命令输入,如 ls | grep ay,即将命令ls的输出发送给命令grep作为其输入
第7章 软件包管理
1 一些高级软件包管理工具如APT和yum可以自动搜寻依赖关系并执行安装
2 管理.deb软件包:dpkg
dpkg --install xxx 或dpkg -i xxx 安装软件
dpkg --force - 选项表示强制操作,切记不要轻易使用--force
dpkg -l 显示所有信息
dpkg --search xxx 或 dpkg -S xxx 显示软件包的信息
dpkg --remove xxx 或 dpkg -r xxx 卸载xxx软件包
3 管理RPM软件包:rpm
rpm -i xxx 安装软件包xxx
rpm -i -h -v xxx 或 rpm -ivh xxx 安装软件包 , -v显示rpm当前正在执行的工作,-h通过打印一系列的“#”提醒用户当前的安装进度
rpm -i 同样也支持--force选项,强制安装
rpm -U xxx 升级软件包xxx,也可以加上-v和-h
rpm -q 查询当前系统中已经安装的软件包
rpm -e xxx 卸载软件包xxx
4 APT工具最常用的两个命令:apt-get和apt-cache
apt-get
$ sudo apt-get update ### 更新软件包信息
$ sudo apt-get xxx ### 安装软件包xxx
$ sudo apt-get install xxx ### 下载并安装软件包
$ sudo apt-get upgrade ### 下载并安装在本系统上已有的软件包的最新版本
$ sudo apt-get remove xxx ### 卸载软件包xxx
$ sudo apt-get source xxx ### 下载软件包xxx的源代码
$ sudo apt-get clean ### 删除所有已下载的包文件
$ apt-get -h ### 显示apt-get的完整用法
apt-cache
$ apt-cache search xxx ### 搜索带“xxx”字样的软件包
$ apt-cache depends xxx ### 查询xxx的依赖关系
5 所有apt-get用于下载软件的地址,即安装源,都放在/etc/apt/sources.list中,如下
deb和deb-src:表示软件包的类型。Debian类型的软件包使用deb或deb-src。RPM软件包应该使用rpm或rpm-src
URL:表示指向CD-ROM,HTTP或FTP服务器的地址,从哪里可以获得所需的软件包
hardy等:表示软件包的发行版本和分类
第 8 章 磁盘管理
1 文件系统是一种对物理空间的组织方式,通常在格式化硬盘时创建。在Windows下,有NTFS和FAT两种文件系统。
2 Linux的最常用的几种文件系统:
ext4fs文件系统:预留一块专门的区域来保存日志文件,当对文件进行写操作时,所做的修改将首先写入日志文件,随后再写入一条记录标记日志项的结束。完成后才会对文件系统做实际修改。这样系统崩溃时可以利用日志恢复文件系统。
ReiserFS文件系统:也是一种日志文件系统。
swap:它并不是一种文件系统,swap被称为交换分区,是一块特殊的硬盘空间。当实际内存不够用时操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。windows不会为swap单独划分一个分区,而是使用分页文件实现相同功能,即为“虚拟内存”
3 挂载文件系统
$ sudo mkdir /mnt/cdrom ### 新建一个目录
$ sudo mount /dev/cdrom /mnt/cdrom/ ### 挂载光盘至这个新建的目录
mount: 块设备 /dev/scd0 写保护,以只读方式挂载
$ cd /mnt/cdrom/
$ ls ### 查看光盘内容
$ cd / ### 退出/mnt/cdrom目录
$ sudo umount /dev/cdrom ### 卸载光盘
注:卸载光盘前必须先退出光盘所挂载的那个目录,否则系统会提示设备忙并拒绝卸载
4 Linux下所有的设备都被当作文件来操作
5 在Linux中,每个设备都被映射为一个特殊文件,这个文件被称作“设备文件”。对于上层应用程序而言,所有对这个设备的操作都是通过读写这个文件实现的,通过文件来操作硬件。Linux把所有的设备文件都放在/dev/目录下
这些文件中大部分是块设备文件和字符设备文件,块设备(例如磁盘)可以随机读写,/dev/hda1,/dev/sda2等就是典型的块设备文件。字符设备只是按顺序接受“字符流”,常见的有打印机等。
6 挂载文件系统:mount命令,也可以使用 -t 选项明确指明设备所使用的文件系统类型,常见文件系统的表示方法
表示方法 描述
ext2 Linux的ext2文件系统
ext3 Linux的ext3文件系统
ext4 Linux的ext4文件系统
vfat windows的FAT16/FAT32文件系统
ntfs windows的NTFS文件系统
iso9660 CD-ROM光盘的标准文件系统
另外常用的选项是 -r 和 -w ,分别指定以只读模式和可读写模式挂载设备。 -w 是默认的
$ sudo mount -r /dev/sda3 /mnt/vista
7 在启动的时候挂载文件系统: /etc/fstab文件
8 查看磁盘使用情况: df命令
df命令提供了 -t 参数用于显示特定的文件系统
9 检查和修复文件系统: fsck命令
$ sudo fsck /dev/sda1
$ sudo fsck -p ### 读取fstab文件来检查文件系统
注:使用fsck命令检查并修复文件系统是存在风险的,特别是当磁盘错误非常严重时,修复前请记得备份
10 在磁盘上建立文件系统: mkfs命令,如下
$ sudo mkfs -t ext3 /dev/sdb1 ### 将/dev/sdb1分区格式化为ext4格式
$ sudo mkfs -t ext4 -c /dev/sdb1 ### 可以用 -c 选项来检查指定设备上损坏的块
11 压缩文件:gzip,是目前Linux下使用常见的压缩工具
$ gzip xxx ### 会将xxx压缩成xxx.gz ,源文件xxx就不存在
$ gzip -d xxx.gz 或 gunzip xxx.gz ### 解压xxx.gz文件,xxx.gz就不存在,变成xxx
$ gzip -l xxx.gz ### -l 选择用于查看压缩效果,文件大小以字节为单位
$ gzip -tv xxx.gz ### -t 选项用来测试压缩文件的完整性
12 更高压缩率:bzip2,压缩率高,压缩速度慢,使用方法跟gzip一样
$ bzip2 xxx ### 会将xxx压缩成xxx.bz2 ,源文件xxx就不存在
$ bzip2 -d xxx.bz2 或 bunzip2 xxx.bz2 ### 解压xxx.bz2文件,xxx.bz2就不存在,变成xxx
$ bzip2 -l xxx.bz2 ### -l 选择用于查看压缩效果,文件大小以字节为单位
$ bzip2 -tv xxx.bz2 ### -t 选项用来测试压缩文件的完整性
bzip2可以识别的压缩文件格式包括 .bz2 , .bz , .tbz2 , .tbz 和 bzip2。
13 支持rar格式, rar x xxx.rar ### 解压xxx.rar
14 Linux下的两个存档工具:tar和dd
文件打包:tar
tar -cvf shell.tar shell/ ### 将shell目录连同其下的文件一同打包成文件shell.tar,tar不会删除原来的文件
-c 选项指定tar创建归档文件,-v 选项显示命令的执行过程,-f 选项则用于指定归档文件的文件名
tar -xvf shell.tar ### -x 选项解开shell.jar 文件
-w 选项用于提示确认。-z 选项会自动调用gzip程序,归档文件时最后会去调用gzip压缩归档文件;解开时会先调用gzip解压再解档,如下
tar -czvf shell.tar.gz shell/ ### 打包
tar -xzf shell.tar.gz ### 解档
-j 选项用于调用bzip2程序,用法跟-z选项一样
tar -cjvf shell.tar.bz2 shell/ ### 打包
tar -xjf shell.tar.bz2 ### 解档
转移文件:dd,因为有了更好的dump和restore命令,dd现在很少用。if选项指定输入端的文件系统,of选项则指定其输出端。
$ dd if=/dev/cdrom of=CD.iso
15 Linux中用于建立分区表的工具: fdisk。fdisk是一个交互式的应用程序。在执行完一项操作后,fdisk会显示一行提示信息,并给出一个冒号“ :”,等待用户输入命令。使用命令m可以显示fdisk所有的命令信息
16 备份文件系统: dump
# dump -0u -f /dev/nst0 /web ### 执行从/web到/dev/nst0的0级备份
-0 选项指定dump执行级别为0的备份。级别0表示完整备份。-u选项指定dump更新/etc/dumpdates文件,该文件记录历次备份的时间,备份级别和实施备份的文件系统。 -f 选项指定了用于存放备份的设备
# rdump -0u -f backup:/dev/nst0 /web ### rdump命令用于将备份转储到远程主机
17 从灾难中恢复:restore,它是dump的配套工具,用于从备份设备中提取数据。在恢复前,首先要建立一个临时目录。
# mkdir /var/restore ###建立用于恢复文件的临时目录/var/restore
# cd /var/restore
# restore -i -f /dev/sdb3 ### -i 选项用于交互式地恢复单个文件和目录,-f 选项指定存放备份的设备
# restore -r -f /dev/sdb3 ### -r 选项恢复整个文件系统
# rrestore -i -f backup:/dev/nst0 ### 从远程主机提取备份信息
18 cron 是一个能够定时执行命令的软件
第9章 用户与用户组管理
1 创建帐户
$ sudo useradd -m xxx ### 添加一个用户名为xxx的用户,并自动建立主目录
$ sudo passwd xxx ### 设置用户xxx的登录密码
2 不带 -m 选项的useradd命令不会为新用户建立主目录,用户可以登录到系统的shell,但不能够登录到图形界面。
3 useradd命令的另一个常用的选项是 -g , 该选项用于指定用户所属的组。如下
$ sudo useradd -g users mike ### 建立名为mike的用户帐号,并指定其属于users组
4 添加组可以使用groupadd命令,如下
$ sudo groupadd newgroup
5 shell会记录用户的每一条命令,可以history命令查看
history会列出所有使用过的命令并加以编号,这些信息被存储在用户主目录的.bash_history文件中,这个文件默认情况下可以存储1000条命令记录。用如下命令可以列出最近n条
$ history 10 ### 列出最近使用的10条命令
6 所有用户信息都登记在/etc/passwd文件中,而/etc/shadow文件则保存着用户的的登录密码
7 删除用户:userdel
$ sudo userdel mike ### 删除用户帐号mike,但不删除用户的主目录
$ sudo userdel -r mike ### -r 选项会连同主目录一起删除
8 管理用户帐号:usermod,常用的选项
-d : 修改用户主目录
-e :修改帐号的有效期限,以公元月/日/年的形式表示(MM/DD/YY)
-g :修改用户所属的组
-l :修改用户帐号名称
-s :修改用户登录后所使用的Shell
$ sudo usermod -l mike -d /home/mike -e /12/31/13 jon ###将john改名为mike,主目录改为/home/mike,并设置有效期至2013年12月31日
9 查看用户信息:id,查看用户的UID,GID以及所属的组,id以用户名为参数。没有用户名则显示当前登录用户的信息
10 用户间切换:su
11 /etc/passwd文件内容预览
每一行由7个字段组成,字段间使用冒号分隔,各字段的含义如下:
登录名
口令占位符
用户ID号(UID)
默认组ID号(GID)
用户的私人信息:包括全名,办公室,工作电话,家庭电话等
用户主目录
登录Shell
12 MD5加密算法可以对任意长度的口令进行加密且不产生损失,加密后的长度都是一个固定值(34个字符)。
第10章 进程管理
1 创建shell脚本test,如下
#! /bin/bash
while echo "I'm making files!!"
do
mkdir adir
cd adir
touch afile
sleep 2s
done
$ chmod +x test
$ ./test & ### &表示后台运行
2 每个进程都有一个ID号,即PID。所有进程都必须由另一个进程创建(除了在系统引导时由内核自主创建并安装的几个进程),会有一个父进程的PID,即PPID
3 监视进程:ps命令
ps aux :显示当前系统上运行的所有进程的信息
ps lax:显示父进程ID(PPID)和谦让度(NI)
4 即时跟踪进程信息:top命令。使用命令q可退出
5 查看占用文件的进程:lsof ,查看某个文件被哪些进程使用
6 向进程发送信号:kill,标准语法如下:
kill [-signal] pid
使用kill命令是否一定可以终止一个进程吗?答案是否定的。但有一个KILL信号可以在内核级别杀死一个进程,如下三种方式
$ sudo kill -KILL pid
$ sudo kill -SIGKILL pid
$ sudo kill -9 pid
7 调整进程的谦让度:nice和renice,高谦让度意味着低优先级,谦让度值在-20 ~ +19 。
$ nice -n 2 bc ### 设置bc以谦让度增量2启动
$ sudo nice -n -3 bc ### 设置bc以谦让度-3启动,但可能不得不用root权限启动
$ nice bc ### 不带 -n 选项,默认以谦让度0启动
$ renice +12 -p 8567 ### renice命令可以在进程运行时调整谦让度,-p 选项指定进程的PID
第11章 网络配置
1 DSL是数字用户线路(Digital Subscriber Line)的缩写。目前国内主要使用的DSL技术分支是ADSL,A代表非对称,即上传和下载速度不同。
2 ifconfig命令用于启动或禁用一个网络接口,同时设置其IP地址,子网掩码以及其他网络选项。如下
$ sudo ifconfig eth0 192.168.1.14 netmask 255.255.255.0 up ### 将网络接口eth0的IP地址设置为192.168.1.14,子网掩码为255.255.255.0,up表示同时启动这个网络接口
$ sudo ifconfig eth0 down
3 使用route配置静态路由。Linux内核中维护着一张路由表,每当一个数据包需要被发送时,Linux会把这个包的目标IP地址和路由表中的路由信息比较。使用netstat -r命令可以看到当前系统中的路由信息
route命令用于增加或删除一条路由,如下
$ sudo route add default gw 10.71.84.2
也可以手动设置路由信息,如希望链接到一个网络地址为10.62.74.0/24的网络,在本地网络中有一台IP地址为10.71.84.51的主机可作为网关。
$ sudo route add -net 10.62.74.0/24 gw 10.71.84.51
4 DNS是一种确定主机名和IP地址间的映射关系的方法。