一、命令的基本格式
1、命令行开头的意义
[root@localhost ~]#
root 用户名
~ 表示当前所在位置
localhost 主机名
# 超级用户
$ 普通用户
2、命令的基本格式:
linux命令格式:
command 【-options】【parameter1】
说明:command: 命令名,相应功能的英文单词或单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略,
[]代表可选 parameter1 …:传给命令的参数:可以是零个一个或多个
二、常用快捷键
命令 功能
ctrl + c 终止当前命令
ctrl + z 把命令放入后台
ctrl + l 清屏(相当于 clear)
reset 彻底清屏
ctrl + q 退出
tab 补全
ctr + r 在历史命令中搜索
上下键 查找执行过的命令
ctr + a 光标移到行首
ctr + e 光标移到行尾
ctr + u 把光标所在位置删除到行首
ctrl + alt 使用虚拟机时,linux和Windows之间切换
三、vim编辑器
1、Vim简介
Vim 是从 vi 发展出来的一个在类Unix系统上流行的文本编辑器(可以看作vi的升级版),因为它支持代码补全、编译及错误跳转等方便编程的功能特别丰富,所以在程序员中被广泛使用。
没有安装Vim的同学可以使用:yum install vim -y
2、Vim打开文件的方式
打开方式 | 作用 |
---|---|
#vim 文件路径 | 打开指定路径的文件 |
#vim +数字 文件路径 | 打开指定路径的文件,并且光标移动到指定行 |
#vim +/关键词 文件路径 | 打开指定路径的文件,并且高亮显示关键词 |
#vim 文件路径1 文件路径2 文件路径… | 同时打开多个文件 |
3、Vim的三种模式
3.1 三种模式的简介
Vim中存在三种模式:命令模式、输入模式(编辑模式)、末行模式。
- 命令模式:使用Vim打开文件后默认进入的模式,在该模式下可以进行一些快捷操作,例如:光标移动、复制、剪切/删除等操作。
- 输入模式:在该模式下可以对文件内容进行编辑。
- 末行模式:在该模式下可以执行一些命令对文件进行操作,例如:搜索、替换、保存、退出等。
3.2 三种模式之间的切换
image
命令模式在三种模式的切换之中起到了介质的作用
1、命令模式→编辑模式
按 键 作 用
i 在光标所在字符前开始插入
a 在光标所在字符后开始插入
2、编辑模式→命令模式
按 键 作 用
Esc 退出编辑模式并返回命令模式
3、命令模式→末行模式
按 键 作 用
:(冒号) 进入末行模式
4、末行模式→命令模式
按 键 作 用
Esc 退出末行模式并进入命令模式
4、末行模式的使用
4.1按键的意义:
按键 作用
: 进入末行模式
w 保存
q 退出
! 强制
4.2按键组合使用
按键 作用
:w 保存
:wq 保存并退出
:q 退出
:q! 强制退出
:set number 显示行号
:set nonumber 隐藏行号
:15 定位的第15行
/[字符串] 光标位置向后搜索该字符串
?[字符串] 光标位置向前搜索该字符串
dd 删除光标所在行
ctr+f 向下翻页
ctr+b 向上翻页
三、Linux 常用命令
1、ls命令
1、ls命令
就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,
而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
常用参数搭配:
ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
2、cd 命令
2、cd 命令
cd(changeDirectory) 命令语法:
cd [目录名]
说明:切换当前目录至 dirName。
实例:
cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd - 返回上次所在的目录
3、pwd 命令
3、pwd 命令
pwd 命令用于查看当前工作目录路径。
实例:
pwd 查看当前路径
pwd -P 查看软链接的实际路径
4、mkdir 命令
mkdir 命令用于创建文件夹。
可用选项:
-m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
-p: 可以是一个路径名称。
此时若路径中的某些目录尚不存在,加上此选项后,
系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
实例:
mkdir t 当前工作目录下创建名为 t的文件夹
mkdir -p /tmp/test/t1/t 在 tmp 目录下创建路径为 test/t1/t 的目录,
若不存在,则创建:
5、rm 命令
删除一个目录中的一个或多个文件或目录,
如果没有使用 -r 选项,则 rm 不会删除目录。
如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
rm [选项] 文件…
实例:
(1)删除任何 .log 文件,删除前逐一询问确认:
rm -i *.log
(2)删除 test 子目录及子目录中所有档案删除,并且不用一一确认:
rm -rf test
(3)删除以 -f 开头的文件
rm -- -f*
6、rmdir 命令
从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。
注意:不能删除非空目录(注释:只能用来删除空目录。)
实例:
(1)当 parent 子目录被删除后,使它也成为空目录的话,则顺便一并删除:
rmdir -p parent/child/child11
7、mv 命令
移动文件或修改文件名
移动文件或修改文件名,
根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
当第二个参数为目录时,
第一个参数可以是多个,以空格分隔的文件或目录,
然后移动第一个参数指定的多个文件,到第二个参数指定的目录中。
实例:
(1)将文件 test.log 重命名为 test1.txt
mv test.log test1.txt
(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
mv llog1.txt log2.txt log3.txt /test3
(3)将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
(4)移动当前文件夹下的所有文件到上一级目录
mv * ../
8、cp 命令
将源文件复制至目标文件,
或将多个源文件复制至目标目录。
---------------------重点---------------------------------
注意:
命令行复制,如果目标文件已经存在会提示是否覆盖,
而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
实例:
(1)复制 a.txt 到 test 目录下,
保持原文件时间,如果原文件存在提示是否覆盖。
cp -ai a.txt test
(2)为 a.txt 建议一个链接(快捷方式)
cp -s a.txt link_a.txt
9、cat 命令
cat 主要有三大功能:
1.一次显示整个文件:
cat filename
2.从键盘创建一个文件:
cat > filename 只能创建新文件,不能编辑已有文件。
3.将几个文件合并为一个文件:
cat file1 file2 > file
-b 对非空输出行号
-n 输出所有行号
实例:
(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
cat -n log2012.log log2013.log
(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)
之后将内容附加到 log.log 里
cat -b log2012.log log2013.log log.log
10、more 命令
功能类似于 cat,
more 会以一页一页的显示,方便使用者逐页阅读,
而最基本的指令就是按空白键(space)就往下一页显示,
按 b 键就会往回(back)一页显示。
11、less 命令
less 与 more 类似,
但使用 less 可以随意浏览文件,
而 more 仅能向前移动,却不能向后移动,
而且 less 在查看之前不会加载整个文件。
可以使用 n 查看下一个,使用 p 查看前一个。
12、head 命令
head 用来显示档案的开头至标准输出中,
默认 head 命令打印其相应文件的开头 10 行。
13、tail 命令(查看日志)
用于显示指定文件末尾内容,
不指定文件时,作为输入信息进行处理。
常用查看日志文件。
常用参数:
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)
(1)循环读取逐渐增加的文件内容
ping 127.0.0.1 > ping.log
tail -f ping.log
(查看日志)
以下命令掌握基础命令即可,需要时查询
14、find 命令
用于在文件树中查找文件,并作出相应的处理。
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项:
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件
-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项
实例:
(1)查找 48 小时内修改过的文件
find -atime -2
(2)在当前目录查找 以 .log 结尾的文件。 . 代表当前目录
find ./ -name '*.log'
(3)查找 /opt 目录下 权限为 777 的文件
find /opt -perm 777
(4)查找大于 1K 的文件
find -size +1000c
查找等于 1000 字符的文件
find -size 1000c
-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。
实例:
(5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
find . -type f -mtime +10 -exec rm -f {} \;
(6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除
find . -name '*.log' mtime +5 -ok -exec rm {} \;
(7)当前目录下查找文件名以 passwd 开头,内容包含 "pkg" 字符的文件
find . -f -name 'passwd*' -exec grep "pkg" {} \;
(8)用 exec 选项执行 cp 命令
find . -name '*.log' -exec cp {} test3 \;
-xargs find 命令把匹配到的文件传递给 xargs 命令,而 xargs 命令每次只获取一部分文件而不是全部,不像 -exec 选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
实例:
(9)查找当前目录下每个普通文件,然后使用 xargs 来判断文件类型
find . -type f -print | xargs file
(10)查找当前目录下所有以 js 结尾的并且其中包含 'editor' 字符的普通文件
find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
find -type f -name '*.js' | xargs grep -lF 'editor'
(11)利用 xargs 执行 mv 命令
find . -name "*.log" | xargs -i mv {} test4
(12)用 grep 命令在当前目录下的所有普通文件中搜索 hostnames 这个词,并标出所在行:
find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'
(13)查找当前目录中以一个小写字母开头,最后是 4 到 9 加上 .log 结束的文件:
find . -name '[a-z]*[4-9].log' -print
(14)在 test 目录查找不在 test4 子目录查找
find test -path 'test/test4' -prune -o -print
(15)实例1:查找更改时间比文件 log2012.log新但比文件 log2017.log 旧的文件
find -newer log2012.log ! -newer log2017.log
使用 depth 选项:
depth 选项可以使 find 命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
实例:find 命令从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。 它将首先匹配所有的文件然后再进入子目录中查找
find / -name "CON.FILE" -depth -print
15、chmod 命令
用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用 ls -l test.txt 查找。
以文件 log2012.log 为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有 10 个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是 d,表示是一个目录。从第二个字符开始到第十个 9 个字符,3 个字符一组,分别表示了 3 组用户对文件或者目录的权限。权限字符用横线代表空许可,r 代表只读,w 代表写,x 代表可执行。
常用参数:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
实例:
(1)增加文件 t.log 所有用户可执行权限
chmod a+x t.log
(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
(3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(4)将 test 目录及其子目录所有文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c19、tar 命令
用来压缩和解压文件。tar 本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件
常用参数:
-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
有关 gzip 及 bzip2 压缩:
gzip 实例:压缩 gzip fileName .tar.gz 和.tgz 解压:gunzip filename.gz 或 gzip -d filename.gz
对应:tar zcvf filename.tar.gz tar zxvf filename.tar.gz
bz2实例:压缩 bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2
对应:tar jcvf filename.tar.gz 解压:tar jxvf filename.tar.bz2
实例:
(1)将文件全部打包成 tar 包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
(2)将 /etc 下的所有文件及目录打包到指定目录,并使用 gz 压缩
tar -zcvf /tmp/etc.tar.gz /etc
(3)查看刚打包的文件内容(一定加z,因为是使用 gzip 压缩的)
tar -ztvf /tmp/etc.tar.gz
(4)要压缩打包 /home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
16、date 命令
显示或设定系统的日期与时间。
命令参数:
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
实例:
(1)显示下一天
date +%Y%m%d --date="+1 day" //显示下一天的日期
(2)-d参数使用
date -d "nov 22" 今年的 11 月 22 日是星期三
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上个月是几月)
date -d next-month +%Y%m(下个月是几月)
17、grep 命令
强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。
grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file|dir
常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
grep 的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
实例:
(1)查找指定进程
ps -ef | grep svn
(2)查找指定进程个数
ps -ef | grep svn -c
(3)从文件中读取关键词
cat test1.txt | grep -f key.log
(4)从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp
(5)查找非x开关的行内容
grep '^[^x]' test.txt
(6)显示包含 ed 或者 at 字符的内容行
grep -E 'ed|at' test.txt
18、ps 命令
ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps 工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
命令参数:
-A 显示所有进程
a 显示所有进程
-a 显示同一终端下所有进程
c 显示进程真实名称
e 显示环境变量
f 显示进程间的关系
r 显示当前终端运行的进程
-aux 显示所有包含其它使用的进程
实例:
(1)显示当前所有进程环境变量及进程间关系
ps -ef
(2)显示当前所有进程
ps -A
(3)与grep联用查找某进程
ps -aux | grep apache
(4)找出与 cron 与 syslog 这两个服务有关的 PID 号码
ps aux | grep '(cron|syslog)'
19、kill 命令
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
常用参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
实例:
(1)先使用ps查找进程pro1,然后用kill杀掉
kill -9 $(ps -ef | grep pro1)
四、linux常用命令整理
原文链接
1.目录操作
mkdir: 创建目录
-p : 递归的创建目录 也就是可以创建多层目录
一次创建多个目录: mkdir {a,b,c,d,e,f}
一次创建 a b c d e f多个目录。
rmdir:删除一个空文件夹
cp:复制文件或者文件夹
-a = -pdr
-p 同时复制文件属性,比如修改日期
-d 复制时保留文件链接
-r: 复制文件夹时,递归复制子文件夹
-l 不复制,而是创建指向源文件的链接文件,链接文件名由目标文件给出。
note:可以在拷贝的同时重命名
mv:移动文件或者文件夹,可以在移动的时候重命名
rm :删除文件或者文件夹
-r:递归删除
-f:强制删除 即没有提醒
2.文件处理命令
ls :查看文件
-l 以列表形式查看
-h 以一种人性化的方式查看,也是文件的大小以合适的单位显示
-a 查看所有文件,包括隐藏文件
-i 显示出文件的i节点号
-t 按时间倒序排列
touch 文件名:创建文件 可以一次创建多个文件,以空格隔开
cat :查看文件内容
-n:带行号
tac:反向显示文件内容
more:分页查看文件内容
进入浏览模式后:
f或者空格:下一页
enter:一行一行往下翻
q:退出
less:查看文件内容
空格翻页
回车换行
pageup:上一页
pagedown:下一页
上箭头:向上翻
下箭头:向下翻
/搜索词 n向下找
head -n 文件名 :查看文件前n行。缺省-n显示前10行
tail -n 文件名 : 查看文件的末尾几行
-f : 动态显示文件末尾内容
ln:链接命令
-s创建软连接
硬链接和cp -p的区别是硬链接会同步更新
源文件如果丢失,硬链接依然存在。
硬链接和源文件的i节点相同。
硬链接不能夸分区,软连接可以跨分区。
硬链接不可以链接目录,链接可以
软连接文件具有的权限是ugo都是rwx
3.压缩解压缩命令
.gz格式
压缩:gzip 文件名 只能压缩文件不能压缩目录,压缩完源文件也不见了
解压缩:gunzip/gzip -d 压缩包名称
tar:
-zcvf 压缩后文件名 打包的目录 :生成.tar.gz文件
注:这个命令先用tar归档,然后把归档的包压缩成.gz
-zxvf 要解压的文件名 :解压缩.tar.gz的文件
-jcvf 压缩后的文件名 打包的目录:生成.tar.bz2
注:这个命令先用tar归档,然后把归档的包压缩成.bz2
-jxvf 要解压的文件名 :解压.tar.bz2的文件
zip:
zip -r 压缩生成的文件名 要压缩的目录
zip 压缩生成的文件名 要压缩的文件。
unzip:
unzip 要解压缩的文件
bzip2:
bzip2 -k 要压缩的文件名 -k选项:保留源文件
bunzip2 -k 要解压的文件名 -k选项:保留压缩包
4.权限管理命令
chmod:修改文件或目录的权限,只有root和所有者可以更改
[{ugoa} {+-=} {rwx}] [文件或目录]
[mode=421] [文件或目录]
-R 递归修改
权限的数字表示:
r->4
w->2
x->1
例:chmod u+x a.txt
chmod g+w,o-r a.txt //同时做多个权限的修改
chmod g=rwx a.txt
chmod 640 a.txt
chmod -R 777 testdir //把目录和下面所有文件的权限
字母 含义 针对文件 针对目录
r 读权限 可以查看文件内容 可以列出目录中的内容
w 写权限 可以修改文件内容 可以在目录中创建、删除文件
x 执行权限 可以执行文件 可以进入目录
chown:更改文件所有者,只有root可以更改
chown root a.txt //把a.txt更改为root所有
chgrp:更改所属组
chgrp lambrother fengjie //把fengjie的所属组更改为lambrother
umask -S:查看创建文件的缺省权限,即默认权限
umask 023:修改文件的缺省权限为777-023=754。即rwxr-xr--
5.网络命令
write:给在线用户发送信息,用户不在线不行。以Ctrl+D保存
write 用户名
wall:给所有用户名发送信息
wall 要发送的信息
ping:测试网络连通性
ping ip地址
-c 要ping的次数
ifconfig:
直接回车查看当前网卡信息
ifconfig 网卡名 ip地址 临时修改网络ip
ifconfig th0:0 192.168.1.100 netmask 255.255.255.0
给th0这个网卡新添加一个ip
ifconfig eth0:0 down
ifconfig eth0:0 up
ifdown th0
禁用th0这块网卡
ifup th0
开启th0这块网卡
mail:邮件命令
mail 要发送的用户名
mail 直接回车:查看命令
help :查看支持的命令格式
输入序列号:查看邮件详细内容
h: 回到邮件列表
d 序列号:删除序列号对应的邮件
last:统计计算机所有用户登录的时间信息,以及重启信息
lastlog:所有用户最后一次登录的时间
-u 用户的uid 查看指定用户的登录信息。
traceroute:显示数据包到主机间的路径
traceroute 要探测的地址.
-n 使用ip而不使用域名
nslookup www.baidu.com
查看百度的ip地址
netstat:显示网络相关信息
-t :tcp协议
-u :udp协议
-l:监听
-r:路由
-n:显示ip地址和端口号
netstat -tlun:查看本机监听的端口
netstat -an:查看所有的监听信息
netstat -rn :查看路由表,即网管
wget 文件地址
下载文件
service network restart:重启网络服务。
telnet 域名或ip
远程管理与端口探测
如: telnet 192.168.2.3:80
探测192.168.2.3是否开启了80端口
mount:挂在命令
mount -t iso9660 /dev/sr0 /mnt/cdrom :把sr0挂在到cdrom
6.文件搜索命令
find:搜索制定范围内的文件
find [搜索范围] [匹配条件]
-name 按文件名搜索
-iname 根据文件名查找,不区分大小写
-size +n大于 -n小于 n等于 这个n是数据块,在Linux中一个数据块是512字节大小
-user 根据所有者查找
-group 根据所属组查找
根据文件属性查找:
-amin 访问时间 access
-cmin 根据文件属性被修改的时间 change
-mmin 根据文件内容被修改的时间 modify
例: find /etc -cmin -5 :查找/etc目录下五分钟内被修改过属性的文件和目录
-a 两个条件同时满足
find /etc -size +10 -a -size -50
-o 两个条件满足一个即可
-type
f 文件 d 目录 l软连接文件
-inum 根据i节点查找
对找到的结果进行操作
-exec或者-ok 命令 {} \;
例如:
find /etc -name init* -exec ls -l {} \; 对找到的文件名按列表查看
find /etc -name init :搜索目录/etc下面所有的init文件,精确匹配,包括子目录中的init文件
find / -size +204800 搜索大于100M的文件
locate:(查找速度非常快,因为它维护了一个文件库。缺点就是新建立的文件没有很快收录到文件库)
locate 文件名
updatedb 更新locate的文件资料库 文件资料库不收录/tmp下的文件
-i 不区分大小写
which :查找命令的目录以及别名
which 命令
whereis :搜索命令所在目录及帮助文档路径。
grep:在文件中搜寻字符串匹配的行并输出,多个文件以空格隔开。
-i不区分大小写
-v排除指定字符串
-E 以正则表达式的方式搜索
-F 以普通文本的方式搜索
-n 显示搜索到的内容在文件中的行号。
7.帮助命令
man:查看命令或者配置文件的帮助信息
man 命令/配置文件
在手册里面,可以输入/要查找的str
man ls
man services
man fstab //直接输入配置文件的名字,而不需要使用绝对路径 重点查看name选项和配置文件的格式。
如果一个命令即使命令又是配置文件,那么可以使用一个序号进行区分,比如:
man 1 passwd 查看命令passwd的帮助
man 5 passwd 查看配置文件passwd的帮助
whatis 命令:得到命令的简要信息
apropos 配置文件名:查看配置文件的简短信息
命令 --help:查看命令的选项。
help 命令:查看shell内置命令的帮助信息。 shell内置命令是没有命令路径。不能使用man查看帮助。
8.用户管理命令
useradd: 添加用户
useradd 用户名
passwd: 修改用户密码
passwd 用户名 不加用户名直接更改自己的密码
who:查看当前的账户 显示的格式为: 登录用户名 登录终端(tty:本地登录 pts:远程终端) 登录时间 ip地址
w:查看更详细的用户登录信息。
9.关机重启命令
shutdown:这个关机命令更安全一些,不推荐使用其他关机命令。
-h:关机
shutdown -h now shutdown -h 20:30
-r:重启
shutdown -r now
-c:取消上次的关机命令
重启:
init 6
reboot
关机:
init 0
poweroff
系统运行级别:
0 关机
1 单用户 类似windows安全模式
2 不完全多用户,不含nfs服务
3 完全多用户
4 未分配
5 图形界面
6 重启
可以通过查看/etc/inittab来查看系统启动的运行级别
runlevel:查看当前的运行级别
init n:设置系统运行级别
logout:退出当前用户,返回到登录界面
10.其他小技巧
\命令名字 :使用原始的命令
比如:
ls 实际上是ls --color auto
\ls 就是原始的ls
五、软件包
1.软件包分类
源码包
脚本安装包
特点:
1. 开源
2. 可以自由选择所需的功能
3. 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
4. 卸载方便,即可以直接删除文件夹。
缺点:
1. 安装过程步骤较多,尤其安装较大的软件集合时,容易出现错误
2. 编译时间较长,安装毕二进制安装时间长
3. 因为是编译安装,安装过程中一旦报错新手很难解决
二进制包(RPM包、系统默认包)
优点:
1. 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
2. 安装速度比源码包安装快的多
缺点:
1. 经过编译,不再可以看到源代码
2. 功能选择不如源码包灵活
3. 依赖性
2.rpm命令管理-包命名与依赖性
1. RPM包命名原则
httpd-2.2.15-15.el6.centos.l.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6.centos 适合的Linux平台
i686 适合的硬件平台
rpm rpm包扩展名
如果名字里有noarch,则表示所有平台都可以。
2、 rpm包依赖性
树形依赖: a->b->c 从后往前安装所依赖的包。
环形依赖: a->b->c->a 解决办法:一次性安装三个包
模块依赖:模块依赖查询网站 :www.rpmfind.net 一般以.so.数字结尾的依赖包,是库依赖包,只需要安装包括这个库的软件就可以自动安装好这个所需的库依赖包
包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径。安装、升级时用
包名 :操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库。一般查询,卸载时用
3. rpm安装:
rpm-ivh 包全名
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性 一般都必须要检测
4. rpm包升级:
rpm -Uvh 包全名
-U(upgrade) 升级
-h
5. rpm -e 包名
-e(erase) 卸载
--nodeps 不检查依赖性
6. 查询是否安装
rpm - q 包名 :查询包是否安装
-q(query) 查询
-a(all) 所有
-i(information) 查询软件信息
-p(package) 查询未安装包信息
rpm -ql 包名:查询包中文件安装位置(list) 注:包的安装路径在包生成的时候就确定了
rpm -qlp 包全名:查询未安装包安装时会安装在哪里。
rpm -qf 系统文件名 :查询系统文件属于哪个rpm包 注:系统文件名必须是通过安装哪个包生成的文件
-f:查询系统文件属于哪个包
rpm -qR 包名 查询已安装软件包的依赖性
-r: 查询软件包的依赖性(requires)
rpm -qRp:查询未安装包的依赖性
-p: 查询未安装包的依赖性
例如:
rpm -qa | grep httpd 查询所有Apache的包
7. rpm包校验
rpm -V 已安装的包名 :如果没有提示则表示没有被修改过
-V 校验指定rpm包中的文件(verify)
校验值的含义:
S:文件大小是否改变
M:文件的类型或文件的权限(rwx)是否被改变
5:文件MD5校验和是否改变(可以看成文件内容是否改变)
D:设备的中,从代码是否改变
L:文件路径是否改变
U:文件的属主(所有者)是否改变
G:文件的属组是否改变
T:文件的修改时间是否改变
8. rpm包中文件提取:
rpm2cpio 包全名 | \
cpio -div .文件绝对路径
rpm2cpio:讲rpm包转换为cpio格式的命令
\表示命令没有输完,在下一行继续输入
cpio:是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
cpio 选项 <[文件|设备]
-i copy-in模式,还原
-d:还原时自动新建目录
-v:显示还原过程
例如:
rpm -qf /bin/ls #查看ls命令属于哪个包
mv /bin/ls /tmp #将ls命令移走
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls #提取rpm保重ls命令到当前目录的/bin/ls下
cp /root/bin/ls /bin/ #把ls命令复制到/bin/目录,修复文件丢失
3.yum在线管理:
yum在线管理:
一、 ip地址配置
第1步:setup:使用图形界面配置ip地址
第2步:vi/etc/sysconfig/network-scripts/ifcfg-eth0 把ONBOOT="no"改为ONBOOT="yes" #启动网卡
第3步:service network restart :重新启动网络服务。
二、网络yum源
1. yum源位置:/etc/yum.repos.d/CentOS-Base.repo,这个是默认的网络yum源
[base] 容器名称,一定要放在[]中
name 容器说明,可以自己随便写
mirrorlist 镜像站点,这个可以注释掉
baseurl 我们的yum源服务器的地址,默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址
enabled 此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效
gpgcheck 如果是1是指rpm的数字证书生效,如果是0则不生效
gpgkey 数字证书的公钥文件保存位置。不用修改。
2. yum命令
yum list :获取服务器上所有可用的软件的列表
yum search 关键字:搜索服务器上所有和关键字相关的包
yum -y install 包名:安装软件包
install:安装
-y:自动回答yes
yum -y update 包名:升级软件包
update:升级
-y:自动回答yes
如果没有包名,就会升级所有的软件包,包括Linux内核。慎用
yum -y remove 包名
remove:卸载
-y:自动回答yes
注:yum会自动卸载依赖包,而很有可能这个依赖包也被别的包依赖,所以很危险,慎用。
yum grouplist:列出所有可用的软件组列表
yum groupinstall 软件组名:安装指定软件组,组名可以由grouplist查询出来 注:如果查询出来的软件组名中间有空格,要使用""引起来。
yum groupremove 软件组名:卸载指定软件组
3. 光盘yum源
1) 挂在光盘 mount /dev/sr0 /mnt/cdrom
2) 让网络yum源文件失效
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv Centos-Vault.repo Centos-Vault.repo.bak
3) 修改光盘yum源文件
vim CentOS-Media.repo
[c6-media]
name=CentOS-$releaserver -Media
baseurl=file:///mnt/cdrom
#地址为你自己的光盘挂载地址
# file:///media/cdrom/
# file:///media/cdrecorder/
#注释这两个不存在的地址
gpgcheck=1
enabled=1 #把enabled=0改为enabled=1,让这个yum配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
注意:注释配置行的时候,#符号一定要写在开头,不要随便在配置文件某一行后面加注释,也不要随便加空格。
源码包管理
1. 区别
安装之前的区别:概念上的区别
安装之后的区别:安装位置不同
2. rpm包安装位置(大多数)
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc 软件的基本使用书册保存位置
/usr/share/man/ 帮助文件保存位置
3. 源码包安装位置
安装在指定位置当中,一般是
/usr/local/软件名/
4. 安装位置不同带来的影响
rpm包安装的服务可以使用系统服务管理命令(service)来管理
例如rpm包安装的Apache的启动方法是:
/etc/rc.d/init.d/httpd start 注:服务的安装路径一般在:/etc/rc.d/init.d下
service httpd start 注:service命令是红帽的专用命令,只能管理rpm包安装的服务
源码包安装过程
1. 安装准备
安装C语言编译器 gcc
下载源码包
http://mirror.bit.edu.cn/apach/httpd/
2. 安装注意事项
源代码保存位置:/usr/local/src/
软件安装位置: /usr/local/
如何确定安装过程报错:
安装过程停止并出现error、warning或no的提示
3. 源码包安装过程
1)下载源码包
2)解压缩下载的源码包
3)进入解压缩目录 注:里面有个INSTALL是系统安装的步骤说明
4)./configure 软件配置与检查
定义需要的功能选项
检测系统环境是否符合安装要求
把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。
./configure --prefix=/usr/local/apache2 :定义安装位置
5)make :编译
如果前面有错误,则使用make clean命令清楚编译产生的临时文件
6)make install:编译安装
4. 源码包的卸载
不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件
脚本安装
1. 脚本安装包
脚本安装包并不是独立的软件包类型,常见安装的是源码包
是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装
非常类似于windows下软件的安装方式
2. Webmin的作用
Webmin是一个基于web的Linux系统管理界面,你就可以通过图形化的方式
设置用户账号、Apache,DNS、文件共享等服务。
3、 webmin安装过程
1) 下载软件
http;//sourceforge.net/projects/webadmin/files/webmin/
2) 解压缩,并进入解压缩目录
3) 执行安装脚本 ./setup.sh
4.其他命令
其他命令
du -sh 文件名
ps 静态查看系统进程,系统默认安装
ps -aux 使用BSD语法查看所有进程
ps -ef 标准语法查看所有进程
UID 程序被该 UID 所拥有
PID 就是这个程序的 ID
PPID 则是其上级父程序的ID
C CPU 使用的资源百分比
STIME 系统启动时间
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
ps -aux --sort -pcpu,-pmem
根据CPU占用情况和内存占用情况来显示进程
watch -n 1 'ps -aux --sort -pcpu,-pmem'
每隔1秒监控一次进程情况
top 动态查看系统的状态
lsof -Pti :8000
通过端口号获得进程pid
kill -9 pid
杀死指定pid的进程,强行杀死。
history
查看历史命令
执行历史命令
!! 执行上一条命令
!n 执行历史命令的中第n条
!-n 执行导数第n条
!string 执行以string开头的历史命令行
!?string? 执行包含string的历史命令行
alias
给命令起别名
alias 命令='别名'
alias -p 查看已存在的别名
unlias
取消别名
unlias name
cal
查看某一年的日历,可以是1-9999中的任意一年
cal 88
zcat
查看压缩包中的内容
sed -i 's#old#new#g' 文件名
使用new替换文件中的old
ssh root@192.168.8.15 "ifconfig"
远程执行命令
bash -x 脚本名
调试脚本
centos6上的三个网络配置文件
/etc/sysconfig/network-scripts/ifcfg-etho
/etc/sysconfig/network
/etc/resolv.conf # dns