考试题讲解

1.目录创建与切换

mkdir---->make directory

[root@XMJ ~]# mkdir /xmj       #创建目录
[root@XMJ ~]# ll -ld /xmj/
drwxr-xr-x 2 root root 4096 May 30 09:51 /xmj/

*-p表示递归创建
[root@XMJ xmj]# mkdir a/b/c
mkdir: cannot create directory `a/b/c': No such file or directory
[root@XMJ xmj]# mkdir -p a/b/c  #-p表示递归创建,非常重要的参数
[root@XMJ xmj]# ll
total 4
drwxr-xr-x 3 root root 4096 May 30 09:56 a
[root@XMJ xmj]# ls a/b
c
[root@XMJ xmj]# tree (-L n)     #查看目录结构(向下查看几层)
.
`-- a
    `-- b
        `-- c

3 directories, 0 files
[root@XMJ ~]# touch /xmj/test.txt  #创建文件
[root@XMJ ~]# ls /xmj/
a  test.txt

*当新建文件名已有时,不会提示错误,但是会修改时间戳
[root@localhost data]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 11 09:05 oldboy.txt
[root@localhost data]# touch oldboy.txt
[root@localhost data]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 11 09:07 oldboy.txt
[root@localhost data]# 


*同时创建多个文件
[root@localhost data]# touch 1.txt 2.txt 3.txt
[root@localhost data]# ls
1.txt  2.txt  3.txt  oldboy.txt
[root@localhost data]# touch {a,b,c}.txt
[root@localhost data]# ls
1.txt  2.txt  3.txt  a.txt  b.txt  c.txt  oldboy.txt

*#批量建立1000个文件
 注意:此处用的是反引号``
[root@XMJ xmj]# for f in `seq 1000`;do touch $f.txt;done   
[root@XMJ xmj]# ls
1000.txt  200.txt  301.txt  402.txt  503.txt  604.txt  705.txt  806.txt  907.txt
.....
[root@XMJ xmj]# touch a.txt         #多种创建文件的方式
[root@XMJ xmj]# ls
a.txt
[root@XMJ xmj]# echo >b.txt
[root@XMJ xmj]# ls
a.txt  b.txt
[root@XMJ xmj]# >c.txt
[root@XMJ xmj]# ls
a.txt  b.txt  c.txt
[root@XMJ xmj]# 



[root@XMJ /]# cd                #不跟任何参数,意味着切换到自己的家目录
[root@XMJ ~]# cd /xmj/         #也可跟相对路径和绝对路径,切换到相应的位置
[root@XMJ xmj]# pwd             #显示当前位置
/xmj
[root@XMJ xmj]# 

    .:当前目录
    ..:上级目录
    -:上次所在的目录

2.给文件增加内容

(1)vim编辑器
    i:进入插入模式
    esc:退出插入模式
    保存|退出:q | q! | wq | wq!

(2)echo
    *一般只能往结尾追加|>覆盖|>>追加

[root@XMJ xmj]# echo "The weather is so good today!" > a.txt 
-bash: !": event not found
[root@XMJ xmj]# echo "The weather is so good today" > a.txt
[root@XMJ xmj]# cat a.txt 
The weather is so good today
[root@XMJ xmj]# echo "I am so happy today" >> a.txt
[root@XMJ xmj]# cat a.txt 
The weather is so good today
I am so happy today
[root@XMJ xmj]# echo "Biu biu biu" > a.txt
[root@XMJ xmj]# cat a.txt 
Biu biu biu
[root@XMJ xmj]#

(3)cat

[root@XMJ xmj]# >a.txt          #清空文件内容
[root@XMJ xmj]# cat a.txt 
[root@XMJ xmj]# cat > a.txt 
I am so happy today!
The weather is so good today!   #Enter之后ctrl+c|d退出编辑即可保存成功
[root@XMJ xmj]# cat a.txt 
I am so happy today!
The weather is so good today!
^C
[root@XMJ xmj]# 


(4)生产环境中必须会的

*非常重要:表示吧两个 FOF 之间的内容追加到 a.txt 中
    可同时追加多行 
    >|表示覆盖
    >>|表示追加
[root@XMJ xmj]# cat >> a.txt  << FOF    #FOF只是标签成对存在,可以随意替换|
> I am studying!
> I am so tired!
> I like studying!
> EOF
> 
> FOF
[root@XMJ xmj]# cat a.txt 
I am so happy today!
The weather is so good today!
I am studying!
I am so tired!
I like studying!
EOF
(>>表示追加,>表示覆盖)
[root@XMJ xmj]#
*合并两文件内容
[root@localhost linux]# cat > b.log
b.log
^C
[root@localhost linux]# cat a.log 
a.log
[root@localhost linux]# cat b.log 
b.log
[root@localhost linux]# cat a.log b.log > c.log
[root@localhost linux]# cat c.log 
a.log
b.log
[root@localhost linux]#

3.文件复制 cp

*cp -ap(拷贝目录时需要添加的参数) 源文件 目标位置/(改名)| -p保持属性|-a.-r拷贝目录

4.文件移动 mv

*mv 源文件 目标位置
    -i:如果文件存在,询问是否需要覆盖
    -f:强制执行,不会询问

5.删除 rm

    -f:强制删除.不加询问
    -r:删除目录
    *注意:rm -fr 特别危险,因此在生产环境中要谨慎使用

6.查看文件内容 cat

[root@XMJ xmj]# head -2 a.txt   #-n表示前n行(不加参数默认前10行)
test
liyao
[root@XMJ xmj]#
*head 取文件开头的多少行
*tail 取文件结尾的多少行
*head|tail -n filename  #指定查看filenme前|后n行

[root@XMJ xmj]# cat a.txt       #查看文件内容
[root@XMJ xmj]# cat >> a.txt << XMJ
> test
> liyao
> oldboy
> XMJ
[root@XMJ xmj]# cat a.txt 
test
liyao
oldboy
*对文件内容进行过滤|-v表示排除后面的内容
[root@XMJ xmj]# cat a.txt | grep -v oldboy  #-v表示,排除后面的内容
test
liyao
*注意:当文件很大时,如果先使用cat进行查看然后再过滤,这样效率会非常慢的
[root@XMJ xmj]# 
*可直接对文件进行处理
[root@XMJ xmj]# grep -v oldboy a.txt 
test
liyao
[root@XMJ xmj]# grep  oldboy a.txt 
oldboy
[root@XMJ xmj]# 
*grep|sed|awk linux命令三剑客,在使用时都可以直接接文件

7.grep | sed | awk Linux中非常厉害的三个命令

*需要熟练,了解各自的擅长

[root@XMJ xmj]# sed -e '/oldboy/d' a.txt #-e编辑d删除
test
liyao
*在输出过程删除oldboy字符串,不会改变文件内容
[root@XMJ xmj]# sed -n /oldboy/p a.txt  #-n表示取消默认输出|相当于直接用grep过滤
oldboy
[root@XMJ xmj]#

*注意了解正则表达式
    sed -n '2p' test.txt        #打印第二行
    sed -n '$p' test.txt       #打印最后一行
    sed -n '1,3p' test.txt      #打印1-3行
    sed -n '/vdds/'p test.txt   #打印匹配vdds的行
    sed -n '4,/The/'p test.txt  #在第四行匹配The,若匹配,则打印  


[root@XMJ xmj]# sed -n /[^oldboy]/p a.txt   #^表示非 |将不是oldboy的内容打印出来
test
liyao
[root@XMJ xmj]# awk /[^oldboy]/ a.txt 
test
liyao
[root@XMJ xmj]#

*grep|awk|sed都有过滤字符串的功能,grep最擅长

8.文件拷贝

[root@XMJ xmj]# tree        #(-L num 表示要看的层数)
.
|-- mnt
|   `-- test.txt
`-- tmp
    `-- test.txt

2 directories, 2 files
[root@XMJ xmj]# cp mnt/test.txt tmp/        #alias别名中cp=‘cp -i’
cp: overwrite `tmp/test.txt'? 
[root@XMJ xmj]# cp -f mnt/test.txt tmp/
cp: overwrite `tmp/test.txt'? 
[root@XMJ xmj]# \cp -f mnt/test.txt tmp/    #不要提示1
[root@XMJ xmj]# /bin/cp -f mnt/test.txt tmp/    #不要提示2
注:全路径和反斜线,目的都是为了把系统的别名屏蔽掉

*mv用法同上
[root@XMJ xmj]# mv mnt/test.txt tmp/
mv: overwrite `tmp/test.txt'? 
[root@XMJ xmj]# /bin/mv -f mnt/test.txt tmp/
[root@XMJ xmj]# \mv -f mnt/test.txt tmp/
mv: cannot stat `mnt/test.txt': No such file or directory
[root@XMJ xmj]#

9.alias 别名

[root@XMJ xmj]# alias 
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@XMJ xmj]# unalias 别名      #取消此命令的别名

[root@XMJ xmj]# cat ~/.bashrc      #别名存放位置(家目录下)
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
[root@XMJ xmj]#

添加别名:

[root@XMJ xmj]# alias rm='echo "rm cmd is not allow to use."'#添加别名
[root@XMJ xmj]# rm
rm cmd is not allow to use.
[root@XMJ xmj]# ls
mnt  tmp
[root@XMJ xmj]# rm -fr tmp/
rm cmd is not allow to use. -fr tmp/
[root@XMJ xmj]# unalias rm              #取消别名
[root@XMJ xmj]# rm -fr tmp/
[root@XMJ xmj]# ls
mnt
[root@XMJ xmj]#

*在工作中,不希望别人使用的命令可以给它添加别名,以保证工作环境的安全性

10.查看文件所特定行数的内容

*seq 生成一个序列的数字
[root@XMJ xmj]# seq 100
1
2
.
.
.
100
[root@XMJ xmj]# seq 100 > ett.txt
[root@XMJ xmj]# cat ett.txt 
1
2
.
.
.
100

[root@XMJ xmj]# tail -80 ett.txt | head     #显示20-30行
21
22
23
24
25
26
27
28
29
30
[root@XMJ xmj]#

[root@XMJ xmj]# head -30 ett.txt |tail
21
22
23
24
25
26
27
28
29
30
[root@XMJ xmj]#


*sed

[root@XMJ xmj]# sed -n '20,30p' ett.txt  #-n默认输出,p打印出来
20
21
22
23
24
25
26
27
28
29
30
[root@localhost linux]# seq -s " " 20 30    #-s指定分隔符以空格隔开|横着打
20 21 22 23 24 25 26 27 28 29 30
[root@XMJ xmj]#
*awk

[root@XMJ xmj]# awk '{if (NR>19 && NR<31) print $1}' ett.txt #打印20-30行
20
21
22
23
24
25
26
27
28
29
30
[root@XMJ xmj]#

*echo中的-n参数表示不换行
[root@localhost linux]# echo -n oldboy
oldboy[root@localhost linux]# echo oldboy
oldboy
[root@localhost linux]# echo -n oldboy;echo oldboy
oldboyoldboy
[root@localhost linux]#

11.重定向

*注意区分重定向(>)与追加(>>)|箭头朝哪边,数据流就流向哪边

*输出
>
>>追加
[root@XMJ xmj]# seq 5 >a.txt
[root@XMJ xmj]# cat a.txt 
1
2
3
4
5
[root@XMJ xmj]# echo {a..z} > a.txt     #输出重定向
[root@XMJ xmj]# cat a.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@XMJ xmj]# echo {a..z} >> a.txt    #在结尾追加
[root@XMJ xmj]# cat a.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@XMJ xmj]# 

*输入
<
<<


[root@XMJ xmj]# pwd ;cat a.txt          #时用 ; 可以一次执行多条命令
/xmj
a b c d e f g h i j k l m n o p q r s t u v w x y z
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@XMJ xmj]#                         #两次Tab可以查看出有多少条命令
Display all 1182 possibilities? (y or n)
[root@XMJ xmj]# echo $PATH				#从$PATH路径里面找,如果没有,则报出找不到
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@XMJ xmj]# vim /etc/profile        想要添加路径,则往此文件里面添加
[root@XMJ xmj]#
*;——命令分割符
[root@localhost data]# ls ; pwd
ett.txt  test  test.txt
/data
[root@localhost data]#

12.常用快捷键

Tab    补全|可以直接tab*2查看linux中有多少条命令
*按tab键所查找的命令都是从$PATH的路径当中查找的|如果没有,则提示错误
[root@localhost data]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost data]#

Ctrl+C 终止当前任务
Ctrl+D 退出当前用户|窗口(相当于exit)
Ctrl+a 光标移动到开头
Ctrl+e -------结尾
ctrl+u 删除光标所在处之前的
ctrl+k -------------后--

13.find 命令

*特别重要
*find 路径 类型 name 名称 -exec 动作 {} \;
[root@XMJ xmj]# find /etc/ -type f -name 'services'
/etc/services
[root@XMJ xmj]# 
    f:文件
    d:目录
[root@XMJ xmj]# find /etc -name "services" -exec rm -f {} \;
[root@XMJ xmj]# find /etc -name "services" -mtim +7 -exec rm -f {} \;   #删除7天前的
[root@XMJ xmj]# find /etc -name "services" -mtim +7|xargs rm -f 

14.过滤出当前目录下的目录和文件

* ^表示以...开头|在[]里面表示非
* /$表示以...结尾
*find 可以查子目录,ls 只能查一级目录
*正则表达式 . 表示任意单个字符

(1)ls -l
* -ldpF
    l:长格式显示
    d:显示目录
    p:目录结尾加/
    F:给所有文件的结尾都加内容

*区别文件和目录:颜色|文件开头-文件,d目录
[root@XMJ xmj]# ls -l
total 12
-rw-r--r-- 1 root root    0 May 30 15:19 file1
-rw-r--r-- 1 root root    0 May 30 15:19 file2
-rw-r--r-- 1 root root    0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]# ls -l | grep ^d     #过滤目录以d开头的
* ^ 在[]里面表示非,在[]外面表示以..开头
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]# ls -l | grep ^-     #过滤文件以-开头的
-rw-r--r-- 1 root root    0 May 30 15:19 file1
-rw-r--r-- 1 root root    0 May 30 15:19 file2
-rw-r--r-- 1 root root    0 May 30 15:19 file3
[root@XMJ xmj]# 

(2)ls -lF
*目录后面都添加上了 /
 链接文件则在后面加上了*
*正则表达式中以...结尾用$表示

[root@XMJ xmj]# ls -F
file1  file2  file3  linux4/  linux5/  linux6/
[root@XMJ xmj]# ls -lF
total 12
-rw-r--r-- 1 root root    0 May 30 15:19 file1
-rw-r--r-- 1 root root    0 May 30 15:19 file2
-rw-r--r-- 1 root root    0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
[root@XMJ xmj]# ls -lF | grep /     #包含/的
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
[root@XMJ xmj]# ls -lF | grep /$   #必须以/结尾
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/
[root@XMJ xmj]#

(3)ls -lp
*只在目录后面加/

[root@XMJ xmj]# ls -lp
total 12
-rw-r--r-- 1 root root    0 May 30 15:19 file1
-rw-r--r-- 1 root root    0 May 30 15:19 file2
-rw-r--r-- 1 root root    0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5/
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6/

(4)sed

[root@XMJ xmj]# ls -l | sed -n '/^d/p'      #-n表示取消默认输出p表示打印
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]# 

*find 可以查子目录,ls 只能查一级目录
[root@localhost data]# find /data/ (-maxdepth n:查寻的最大深度)-type d 
/data/
/data/linux
[root@localhost ~]# ls /data/
ett.txt  linux  test  test.txt
[root@localhost ~]# 

[root@localhost ~]# find /data/ -maxdepth 3 -type d
/data/
/data/linux
/data/a
/data/a/b
/data/a/b/c
[root@localhost ~]# 


(5)ls -lrt  #查看最近更新的文件
    -r:倒叙排列
    -t:按时间 

[root@XMJ xmj]# ls -lrt
total 12
-rw-r--r-- 1 root root    0 May 30 15:19 file3
-rw-r--r-- 1 root root    0 May 30 15:19 file2
-rw-r--r-- 1 root root    0 May 30 15:19 file1
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
[root@XMJ xmj]# echo 'ni' > file1
[root@XMJ xmj]# ls -lrt
total 16
-rw-r--r-- 1 root root    0 May 30 15:19 file3
-rw-r--r-- 1 root root    0 May 30 15:19 file2
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
-rw-r--r-- 1 root root    3 May 30 16:14 file1
[root@XMJ xmj]#
*把最近的时间显示在当前的最底下

(6)tree打印目录架构
    d:显示目录
    L:显示深度(级别)

14.env 显示环境变量

*env:显示修改过的环境变量 
    - run a program in a modified environment(运行一个程序,在一个修改的环境变量)

[root@XMJ xmj]# env | grep -i xmj   #-i不区分大小写
HOSTNAME=XMJ
PWD=/root/xmj
[root@XMJ xmj]#

15.color参数,可以使结果显示出相对应的颜色

[root@XMJ ~]# grep 1521 /etc/services 
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@XMJ ~]# grep 1521 /etc/services --color
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@XMJ ~]#

16../configer编译时加上了版本号,如果不需要该版本号该怎么办

*做链接
*升级版本时,可以把好之前的旧版本做个链接,便于查询保留

[root@XMJ xmj]# mkdir /application/apache2.2.17 -p
[root@XMJ xmj]# ln -s /application/apache2.2.17/ /application/apache
[root@XMJ xmj]# ll /application/
total 4
lrwxrwxrwx 1 root root   26 May 30 18:26 apache -> /application/apache2.2.17/
drwxr-xr-x 2 root root 4096 May 30 18:26 apache2.2.17
[root@XMJ xmj]# touch /application/apache2.2.17/linux
[root@XMJ xmj]# ls /application/apache
linux
[root@XMJ xmj]# ll /application/apache/
total 0
-rw-r--r-- 1 root root 0 May 30 18:31 linux
[root@XMJ xmj]#

17.已知 apache 服务的访问日志按天记录在服务器本地目录 /app/logs 下,由于磁盘空间紧张,现在要求只能保留最近7天访问的日志!请问如何解决?

(1)删除7天前的,删除前要做备份(备份到服务器上去)
(2)从apache服务配置上着手
    *安装cronolog日志轮询软件,并在apache中如下形式按周轮询访问日志(生产环境中较为常见)

*按周轮询,自动覆盖
[root@XMJ xmj]# clustomlog "| /usr/local/sbin/cronlogn /app/logs/access_www_%w.log" combined
[root@XMJ xmj]#
*这样配置之后最多只能有7份日志文件(按周循环覆盖:推荐)

(3)使用 find 方法删除
*find 用于删除系统的林时文件和垃圾文件
 将任务放在定时任务中
*atime:被访问(access)过的时间
*ctime:被change过的时间
*mtime:被修改(modification)过的----很重要

+4:表示4天以前
 4:表示第四天
-4:表示最近4天

   ----|----|-----
    +4    4   -4

18.跟踪一个文件结尾的变化

*用tail看日志,因为日志是可变的,tail可以监测到变化的结尾,而cat不能

[root@XMJ xmj]# tail -f(F) /var/log/messages        #系统日志文件
f:一旦文件被删,创建同名文件,找不到
F:一旦文件被删,创建同名文件,继续监控
May 30 14:14:47 XMJ kernel: [    5.390924] IPv6: Loaded, but administratively disabled, reboot required to enable
May 30 14:14:47 XMJ kernel: [    5.415852] ip6_tables: (C) 2000-2006 Netfilter Core Team
May 30 14:14:47 XMJ kdump: No crashkernel parameter specified for running kernel
May 30 14:14:47 XMJ acpid: starting up
May 30 14:14:47 XMJ acpid: 1 rule loaded
May 30 14:14:47 XMJ acpid: waiting for events: event logging is off
May 30 14:15:00 XMJ kernel: [   22.347027] type=1305 audit(1496124900.422:11775): auid=4294967295 ses=4294967295 op="remove rule" key=(null) list=4 res=1
May 30 14:15:00 XMJ kernel: [   22.347032] type=1305 audit(1496124900.422:11776): audit_enabled=0 old=1 auid=4294967295 ses=4294967295 res=1
May 30 14:15:00 XMJ kernel: [   22.528639] readahead-collector: sorting
May 30 14:15:00 XMJ kernel: [   22.557147] readahead-collector: finished
*重新打开一个shell
[root@XMJ ~]# echo "1111">>/var/log/messages
可观察到 1111 追加到了文件后面
.....
May 30 14:15:00 XMJ kernel: [   22.557147] readahead-collector: finished
1111
.....

19.打印配置文件nginx.conf内容及行数

[root@server2 conf]# cat -n nginx.conf      #最常见
vim编辑:set nu(添加行号) | set nonu 取消行号
[root@server2 conf]# nl nginx.conf

20.装完系统后,希望网络文件共享服务NFS,仅在3级别上开机自启,该如何做?

Linux的运行等级设定如下(0--6七个):
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:文本模式:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启

^^^^设置系统启动级别
*chkconfig      #设置开机启动时的状态,与当前状态无关
[root@XMJ ~]# chkconfig --list sshd
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@XMJ ~]# chkconfig --level 245 sshd off
[root@XMJ ~]# chkconfig --list sshd
sshd            0:off   1:off   2:off   3:on    4:off   5:off   6:off
[root@XMJ ~]#
*或者将其写到 /etc/rc.d/rc.local
**了解开机启动流程

21.字符集

22.打包

*规范:先切换到要打包目录的上层目录,然后进行打包


*gzip格式
打包: zcvf | zcf
解包: xvf  | xf  | zxvf
*进到要打包的上级目录去打包
[root@XMJ xmj]# ls
file1  file2  file3  linux4  linux5  linux6
[root@XMJ xmj]# tar zcvf file1.tar.gz file1
*z(压缩)|c(创建)|v(显示输出)|f(文件) |p(把持属性)
file1
[root@XMJ xmj]# ll
total 24
-rw-r--r-- 1 root root    3 May 30 16:14 file1
-rw-r--r-- 1 root root  118 May 30 20:36 file1.tar.gz
-rw-r--r-- 1 root root    3 May 30 16:16 file2
-rw-r--r-- 1 root root    0 May 30 15:19 file3
drwxr-xr-x 2 root root 4096 May 30 15:19 linux4
drwxr-xr-x 2 root root 4096 May 30 15:19 linux5
drwxr-xr-x 2 root root 4096 May 30 15:19 linux6
[root@XMJ xmj]#

*如果希望留着目录结构
[root@XMJ ~]# tar zcvf ifcfg-eth0.tar.gz /etc/sysconfig/network-scripts/ifcfg-eth0 
tar: Removing leading `/' from member names
/etc/sysconfig/network-scripts/ifcfg-eth0
[root@XMJ ~]# tar zxvf  ifcfg-eth0.tar.gz      #解压
etc/sysconfig/network-scripts/ifcfg-eth0
[root@XMJ ~]# tree etc/
etc/
`-- sysconfig
    `-- network-scripts
        `-- ifcfg-eth0

2 directories, 1 file
[root@XMJ ~]# 

*--exclude=filename filename不打包     #排除打包
[root@XMJ ~]# tar xf XXX.tar.gz            #解压,不显示过程



*解压
-C:指定解压路径

x:解包
[root@XMJ xmj]# ls
file1  file1.tar.gz  file2  file3  linux1  linux4  linux5  linux6
[root@XMJ xmj]# tar xf file1.tar.gz linux4
tar: linux4: Not found in archive
tar: Exiting with failure status due to previous errors
[root@XMJ xmj]# tar xf file1.tar.gz -C linux4
[root@XMJ xmj]# ls
file1  file1.tar.gz  file2  file3  linux1  linux4  linux5  linux6
[root@XMJ xmj]# ls linux4/
file1
[root@XMJ xmj]# tar xvf file1.tar.gz -C linux5
v:显示过程
file1
[root@XMJ xmj]# tar xf file1.tar.gz -C linux5
[root@XMJ xmj]#


*bzip格式
打包: jcvf | jcf
解包: jxf  | jxvf

[root@XMJ xmj]# tar jcvf file2.tar.bz file2
file2
[root@XMJ xmj]# ls
file1  file1.tar.gz  file2  file2.tar.bz  file3  linux1  linux4  linux5  linux6
[root@XMJ xmj]# tar jxf file2.tar.bz -C linux5
[root@XMJ xmj]# 
*unzip | gzip 解包命令(数据库时会使用) |解压rar

23.cut 取文件内容的一部分,功能简单,易用

[root@XMJ xmj]# cat file1
The weather is so good today
[root@XMJ xmj]# cut -d " " -f2,4 file1
*-d:指定分隔符
 -f:指定要输出的列数
 -c:指定字符
weather so
[root@XMJ xmj]# cut -c 3-5,7-9 file1
e wath
[root@XMJ xmj]# cut -c 3-5,7- file1
e wather is so good today
[root@XMJ xmj]# 

24.awk多分隔符的方法

*文件操作复杂时,建议使用awk(awk可以同时指定多个分隔符)
[root@XMJ xmj]# cat file1
The weather is,so good today
[root@XMJ xmj]# awk -F '[ ,]' '{print $3}' file1
is
[root@XMJ xmj]# awk -F '[ ,]' '{print $5}' file1
good
[root@XMJ xmj]# awk -F '[ ,]' '{print $3" "$5}' file1    #注意" "的使用
is good
[root@XMJ xmj]# awk -F '[ ,]' '{print $3" "$NF}' file1   #$NF表示结尾
is today
*$NF 直接出最后一列
[root@XMJ xmj]# 

25.查看 /etc/services 有多少行

wc -l(查看行数)| -c() | -w() 
*wc在生产环境中最重要的应用,把查到的进程或者其它的内容编程一个数量

[root@XMJ ~]# wc -l /etc/services 
10774 /etc/services
[root@XMJ ~]# cat -n /etc/services | tail -1
 10774  iqobject        48619/udp               # iqobject
[root@XMJ ~]# sed -n '$=' /etc/services 
10774
[root@XMJ ~]# awk '{print NR}' /etc/services | tail -1
10774
[root@XMJ ~]# grep -n $ /etc/services | tail -1
10774:iqobject        48619/udp               # iqobject
[root@XMJ ~]# 

*wc的生产环境应用:把查到的内容等变成数量
[root@XMJ ~]# ps -ef | grep ssh
*ps 查看进程信息
    常用参数: ef | aux(w)
    -x:显示运行在后台的进程
    -u:显示进程的拥有者
    -f:显示进程的详细信息
    %cpu:显示cpu信息
    pid:进程的pid
    .....
root       982     1  0 14:14 ?        00:00:00 /usr/sbin/sshd
root      6068 32626  0 21:43 pts/1    00:00:00 grep ssh
root     28038   982  0 19:07 ?        00:00:00 sshd: root@pts/0 
root     32622   982  0 20:16 ?        00:00:00 sshd: root@pts/1 
[root@XMJ ~]# ps -ef | grep ssh | wc -l        #大于1表示服务还或者
4
[root@XMJ ~]# 

26:过滤出/etc/services 文件包含3306和1521两行数字的内容

[root@XMJ ~]# grep -E "3306|1521" /etc/services 
*若需要过滤多个参数,则用|分隔开就好
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@XMJ ~]# grep -E "3306|1521" /etc/services --colour   #显示出颜色
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@XMJ ~]# 

27.环境变量

*增加环境变量的方法:
    1.将命令文件放入已有的环境变量之下
    2.将命令路径写入/root/.bash_profile

[root@localhost ~]# vim /etc/xmj
echo "You are so beautiful"
[root@localhost ~]# xmj
bash: xmj: command not found...
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# ll /etc/xmj
-rw-r--r--. 1 root root 28 Jul 13 06:40 /etc/xmj
[root@localhost ~]# chmod 700 /etc/xmj
[root@localhost ~]# mv /etc/xmj /usr/sbin/
[root@localhost ~]# xmj
You are so beautiful
[root@localhost ~]#

28.查看最近更新的文件

*在查看日志时非常有用

[root@localhost ~]# mkdir /etc/xiaowan
[root@localhost ~]# touch /etc/abcd.txt
[root@localhost ~]# ls -lrt /etc/  #r倒叙排|t按时间
.....
drwxr-xr-x.  2 root root        6 Jul 13 06:47 xiaowan
-rw-r--r--.  1 root root        0 Jul 13 06:48 abcd.txt
[root@localhost ~]#

[口头表达部分]

1.描述linux从开机到登陆界面的启动过程
    开机其通BIOS自检,加载硬盘
    MBR引导
    grub引导菜单
    加载内核kernel
    启动init进程
    读取inittab文件,执行rc.sysinit,rc等脚本
    启动mingetty,进入系统登陆界面

2.描述linux下软连接和硬连接的区别

3.描述linux shell中单引号、双引号以及不加引号的区别

4.描述linux运行级别0-6的各自含义

5.描述linux下文件删除的原理

[Other]

29.取出/etiantian文件的权限644

[root@localhost ~]# stat -c %a /data/
755
[root@localhost ~]# 

[root@XMJ ~]# touch /etiantian
[root@XMJ ~]# ls -l /etiantian 
-rw-r--r-- 1 root root 0 Jul 16 16:36 /etiantian
[root@XMJ ~]# stat /etiantian 
  File: `/etiantian'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 15          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-16 16:36:13.000000000 +0800
Modify: 2017-07-16 16:36:13.000000000 +0800
Change: 2017-07-16 16:36:13.000000000 +0800
[root@XMJ ~]# stat /etiantian | sed -n 4p
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
[root@XMJ ~]# stat /etiantian | sed -n 4p 
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2
0644/-rw-r--r--)  Uid: 
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2 | cut "/" -f1
cut: /: Is a directory
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2 | cut -d "/" -f1
0644
[root@XMJ ~]# stat /etiantian | sed -n 4p | cut -d "(" -f2 | cut -d "/" -f1|cut -c 2-4
644
[root@XMJ ~]# stat /etiantian | head -4|tail -1 | cut -d "(" -f2 | cut -d "/" -f1|cut -c 2-4
644
[root@XMJ ~]# 

30.mkdir创建一个目录,查看其硬链接数

31.ifconfig查看IP,过滤出IP地址

[root@localhost ~]# ifconfig |sed -n 2p 
        inet 172.25.66.100  netmask 255.255.255.0  broadcast 172.25.66.255
[root@localhost ~]# 

32.重要文件功能

/etc/sysctl.conf    内核参数
/etc/hosts      本地域名解析

33.vim快捷键

shift+g 结尾
gg  开头
:set nu添加行号
$  本行结尾
^/0 本行开头
u   撤销
dnd 删除n行(注意光标定位)
/关键字    搜索(n:向下匹配)
yny 复制n行

34.过滤掉文件中的空格

[root@XMJ xmj]# vim blank
[root@XMJ xmj]# cat blank 
sjkhffkd

jkdljf

jkdsf

jklsdjf
[root@XMJ xmj]# grep -v "^$" blank 	#最简单 ^$:表示以空格开头
sjkhffkd
jkdljf
jkdsf
jklsdjf
[root@XMJ xmj]# 

35.关机

shutdown -h now     立刻关机
shutdown -h +1      1分钟以后关机
init 0
poweroff        立即停止系统并且关闭电源

36.重启

reboot  
shutdown -r now
shutdown -r +1      #1分钟后重启
init6

37.注销

logout
exit
ctrl+d

——-END——-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值