Linux核心面试汇总

csdn汇总

文件的操作命令(增删改查)

  • touch 文件名称: 文件的创建(增)

  • cat/more/less/tail 文件名称 文件的查看(查)

  • cat: 查看显示文件内容

  • more: 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
  • less: 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
  • tail-10 : 查看文件的后10行,Ctrl+C结束 ####注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化(这里可以实现动态观察日志文件的作用)

  • vim 文件: 修改文件的内容(改)

vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。

在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:

vim 文件——>进入文件—–>命令模式——>按i进入编辑模式—–>编辑文件 ——->按Esc进入底行模式—–>输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)

  • rm -rf 文件: 删除文件(删)

同目录删除:熟记 rm -rf 文件 即可

shell几个特殊字符用来处理参数:

参数处理说明
:——-———————————:
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
如”$*“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。 
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。 
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$-显示Shell使用的当前选项,与set命令功能相同。

进程前后台切换

和前端有交互的不能放后台,否则就暂停不能执行。

  • ⑴把进程放后台的方法
  • 命令 &
  • 按下ctrl+z快捷键,放在后台暂停
  • ⑵jobs-l 查看后台工作
  • ⑶fg %工作号 将后台暂停的工作恢复到前台执行
  • ⑷bg %工作号 将后台暂停的工作恢复到后台执行
  • ⑸后台命令脱离终端的方法
  • 加入到/etc/rc.local文件
  • 使用nohup

    解压缩

    .tar.gz结尾的 压缩 tar -zcvf 打包文件名(可以加绝对路径) 被打包的文件 解压缩 tar -zxvf tar -zxvf 解压缩文件 -C 目标位置 .tar.bz2结尾的 压缩 tar -jcvf 打包文件名(可以加绝对路径) 被打包的文件 解压缩 tar -jxvf tar -jxvf 解压缩文件 -C 目标位置

    Linux 系统中查看 inode 号可使用命令 stat 或 ls -i

    |stat /home/harris/source/glibc-2.16.0.tar.xz File: `/home/harris/source/glibc-2.16.0.tar.xz’ Size: 9990512 Blocks: 19520 IO Block: 4096 regular file Device: 807h/2055d Inode: 2485677 Links: 1 Access: (0600/-rw——-) Uid: ( 1000/ harris) Gid: ( 1000/ harris) … … |# mv /home/harris/source/glibc-2.16.0.tar.xz /home/harris/Desktop/glibc.tar.xz |# ls -i -F /home/harris/Desktop/glibc.tar.xz 2485677 /home/harris/Desktop/glibc.tar.xz

    硬链接和软链接

    若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名

    link oldfile newfile ln oldfile newfile

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建(因为不同文件系统可能含有相同 inode号的不同文件);
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件。

硬链接不能对目录创建是受限于文件系统的设计(见 清单 4.对目录创建硬 链接将失败)。现 Linux 文件系统中的目录均隐藏了两个个特殊的目录: 当前目录(.)与父目录(..)。查看这两个特殊目录的 inode 号可知其实 这两目录就是两个硬链接(注意目录 /mnt/lost+found/ 的 inode 号)。若系统允许对目录创建硬链接,则会产生目录环。

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见 图 2.)。因此软链接的创建与使用没有类似硬链接的诸多限制:
  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

使用命令 find 查找软链接与硬链接
	// 查找在路径 /home 下的文件 data.txt 的软链接
# find /home -lname data.txt 
/home/harris/debug/test2/a 
 
// 查看路径 /home 有相同 inode 的所有硬链接
# find /home -samefile /home/harris/debug/test3/old.file 
/home/harris/debug/test3/hard.link 
/home/harris/debug/test3/old.file 
 
# find /home -inum 660650 
/home/harris/debug/test3/hard.link 
/home/harris/debug/test3/old.file 
 
// 列出路径 /home/harris/debug/ 下的所有软链接文件
# find /home/harris/debug/ -type l -ls 
656662 0 lrwxrwxrwx 1 harris harris 1 Sep 1 14:37 /home/harris/debug/test2/b -> a
656627 0 lrwxrwxrwx 1 harris harris 8 Sep 1 14:37 /home/harris/debug/test2/a -> 
data.txt
789467 0 lrwxrwxrwx 1 root root 8 Sep 1 18:00 /home/harris/debug/test/soft.link -> 
old.file 
789496    0 lrwxrwxrwx   1 root     root            7 Sep  1 18:01 
/home/harris/debug/test/soft.link.dir -> old.dir

Linux查看日志命令

  • 第一种:查看实时变化的日志(比较吃内存)

最常用的:

tail -f filename (默认最后10行,相当于增加参数 -n 10)
Ctrl+c 是退出tail命令
其他情况:
tail -n 20 filename (显示filename最后20行)
tail -n +5 filename (从第5行开始显示文件)
  • 第二种:搜索关键字附近的日志

最常用的:

cat -n filename |grep "关键字"
其他情况:
cat filename | grep -C 5 '关键字' (显示日志里匹配字串那行以及前后5行)
cat filename | grep -B 5 '关键字' (显示匹配字串及前5行)
cat filename | grep -A 5 '关键字' (显示匹配字串及后5行)
  • 第三种:进入编辑查找:vi(vim) 

  • 1、进入vim编辑模式:vim filename
  • 2、输入“/关键字”,按enter键查找
  • 3、查找下一个,按“n”即可

退出:按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令
wq! 保存退出;
q! 不保存退出;
其他情况:
/关键字   注:正向查找,按n键把光标移动到下一个符合条件的地方
?关键字   注:反向查找,按shift+n 键,把光标移动到下一个符合条件的

vim相关

:set nu 设置行号
:set nonu 取消行号
?/a/b/g 替换当前行所有 a 为 b
dd 删除所在行
/string 搜索指定字符串(不需要独立成一个完整单词),忽略大小写 :set ic 找下一个出现位置 n
:w 保存修改
:wq 保存退出
q!不保存退出
:wq!保存修改退出(文件所有者和root用户)
在VIM中进行文本替换:
1.  替换当前行中的内容:    :s/from/to/    (s即substitude)
    :s/from/to/     :  将当前行中的第一个from,替换成to。如果当前行含有多个
                        from,则只会替换其中的第一个。
    :s/from/to/g    :  将当前行中的所有from都替换成to。
    :s/from/to/gc   :  将当前行中的所有from都替换成to,但是每一次替换之前都
                        会询问请求用户确认此操作。

    注意:这里的from和to都可以是任何字符串,其中from还可以是正则表达式。

2.  替换某一行的内容:      :33s/from/to/g
    :.s/from/to/g   :  在当前行进行替换操作。
    :33s/from/to/g  :  在第33行进行替换操作。
    :$s/from/to/g   :  在最后一行进行替换操作。

3.  替换某些行的内容:      :10,20s/from/to/g
    :10,20s/from/to/g   :  对第10行到第20行的内容进行替换。
    :1,$s/from/to/g     :  对第一行到最后一行的内容进行替换(即全部文本)。
    :1,.s/from/to/g     :  对第一行到当前行的内容进行替换。
    :.,$s/from/to/g     :  对当前行到最后一行的内容进行替换。
    :'a,'bs/from/to/g   :  对标记a和b之间的行(含a和b所在的行)进行替换。
                            其中a和b是之前用m命令所做的标记。

4.  替换所有行的内容:      :%s/from/to/g
    :%s/from/to/g   :  对所有行的内容进行替换。

5.  替换命令的完整形式:    :[range]s/from/to/[flags]
    5.1 s/from/to/
        把from指定的字符串替换成to指定的字符串,from可以是正则表达式。  

tail显示后几行

  • -f 循环读取
  • -n 显示行数 不加-n默认是显示后10行 行数>
       tail -n 1000:显示最后1000行  
       tail -n +1000:从1000行开始显示,显示1000行以后的  
    

kill 杀死进程

  • kill -1 进程号 重启进程
  • kill -9 进程号 强制杀死进程
  • kill -15 进程号 默认的,正常结束进程,如果发生问题,就会尝试kill -9

grep

把匹 配的行打印出来
  • -i 不区分大小写

      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -i 'line2' grep.txt
      grep line2
      grep LINE2
    
  • -c统计匹配到的次数

      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -c 'line1' grep.txt
    
  • -n显示行号

      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -n 'line1' grep.txt
      1:grep line1
      6:grep line1
    
  • -v查找不包含指定内容的行

      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -v   'line1' grep.txt
    
  • -r逐层遍历目录查找

      grep -r 字符串 文件名
      -A -B -C 后多少行,前多少行,前后多少行  
      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -A1 'line2' grep.txt  
      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -B1 'line2' grep.txt  
      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -C1 'line2' grep.txt  
    
  • -w 精确匹配单词

      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -w 'line1' grep.txt
      grep line1
      grep line1
      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep 'line1' grep.txt
      grep line1
      grep line1
      grep line1line
    
  • -e 与/或

      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ cat grep.txt
      grep line1
      grep LINE2
      grep line1line
      // 与
      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -e 'line1\+line' grep.txt
      grep line1line
      // 或
      mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -e 'line1\|line2' grep.txt
      grep line1
      grep line1line
    
  • 找到以grep开头的行

      grep$ grep '^grep' grep.txt
    
  • 找到以line1结尾的行

      grep 'line1$' grep.txt
    
  • 找到空行

      grep '^$' grep.txt
    
  • 将grep的输出到指定文件

      grep 'line1$' grep.txt > heidou.txt
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值