❝小编在这里给你们准备了50道Linux面试题,或者是说平常知识点,不论是前端或者后端,我以为都是必备的,或者学会了不会吃亏的。建议收藏。前端
❞
是一套无偿使用和自由传播的类UNIX操做系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。java
控制台终端、图形化终端linux
GNU bash shell能提供对linux 系统的交互式访问。做为普通程序运行,一般在用户登录终端时启动。登陆时系统启动的shell依赖与用户帐户的配置。web
大多数linux发行版自带以查找shell命令及其余GNU工具信息的在线手册。man命令用来访问linux系统上的手册页面。当用man命令查看手册,使用分页的程序来现实的。面试
通常登录后,你的位置位于本身的主目录中。shell
绝对文件路径:描述了在虚拟目录结构中该目录的确切位置,以虚拟目录跟目录开始,至关于目录全名。apache
以正斜线(/)开始,好比 /usr/local。编程
相对文件路径:容许用户执行一个基于当前位置的目标文件路径。vim
好比:当前在/usr/local后端
➜ local ls Caskroom Frameworks bin go lib sbin var Cellar Homebrew etc include opt share ➜ local cd go 复制代码
快捷方式(在相对路径中使用):
单点符(.) : 表示当前目录; 双点符(..) : 表示当前目录的父目录。
pwd 显示当前目录
[root@iz2ze76ybn73dvwmdij06zz local]# pwd /usr/local 复制代码
语法: cd destination
destination : 相对文件路径或绝对文件路径
能够跳到存在的任意目录。
ls 命令会用最基本的形式显示当前目录下的文件和目录:
➜ local ls Caskroom Frameworks bin go lib sbin var Cellar Homebrew etc include opt share 复制代码
能够看出默认是按照字母序展现的
通常来讲,ls命令回显示不一样的颜色区分不一样的文件类型,若是没有安装颜色插件能够用ls -F来区分哪些是目录(目录带/),哪些是文件(文件不带/)
ls -R 递归展现出目录下以及子目录的文件,目录越多输出越多
建立文件:touch 文件名
批量建立文件: touch 文件名 文件名 …
➜ test touch a
➜ test ls
a
➜ test touch b c
➜ test ls
a b c
复制代码
建立目录:mkdir 目录名
批量建立目录: mkdir 目录名 目录名 …
➜ test mkdir aa
➜ test mkdir bb cc
➜ test ls
a aa b bb c cc
➜ test ls -F
a aa/ b bb/ c cc/
复制代码
语法: rm destination
-i 询问是否删除,-r 递归删除,-f 强制删除。
rm不能删除有文件的目录,须要递归删除。
➜ xktest rm jdk
rm: jdk: is a directory
➜ xktest rm -r jdk
➜ xktest ls
复制代码
rm -i 询问删除,建议你们平时删除多用 -i,肯定一下再删除。
➜ xktest touch tomcat
➜ xktest rm -i tomcat
remove tomcat? n
复制代码
rm -rf 会直接删除,没有警告信息,使用必须谨慎**。
有的时候文件的名字很长,很容易拼出错即便拼写对了也很浪费时间。
➜ xktest ls java*
javaxiaokaxiu
复制代码
好比操做javaxiaokaxiu这个文件时,输入到java的时候,而后按制表键(tab)就会补全成javaxiaokaxiu,是否是方便多了。
语法: cp source target
若是target不存在则直接建立,若是存在,默认不会提醒你是否须要覆盖,须要加-i就会询问你是否覆盖,n否y是。
➜ xktest cp a c
➜ xktest cp -i a c
overwrite c? (y/n [n]) y
➜ xktest ls
a c
复制代码
语法 : mv soucre target
重命名:
➜ xktest ls
➜ xktest touch java
➜ xktest ls
java
➜ xktest mv java java1.8
➜ xktest ls
java1.8
复制代码
移动文件:
新建jdk目录把java1.8文件移动到jdk目录下。
➜ xktest ls java1.8 ➜ xktest mkdir jdk ➜ xktest mv java1.8 jdk ➜ xktest ls -R jdk 复制代码./jdk: java1.8 复制代码
如过须要在系统上维护同一文件的两份或者多份副本,除了保存多分单独的物理文件副本以外。还能够采用保存一份物理文件副本和多个虚拟副本的方法,这种虚拟的副本就叫作连接。
语法: file destination
➜ apache file tomcat
tomcat: ASCII text
复制代码
能够看出,file命令能够显示文件的类型text以及字符编码ASCII
语法 : cat destination
-n 显示行号,-b 有文本的显示行号。 (默认是不显示行号的)
➜ apache cat -n tomcat 1 text 2 text 3 4 start 5 stop 6 restart 7 end ➜ apache cat -b tomcat 1 text 2 text复制代码3 start 4 stop 5 restart 6 end 复制代码复制代码3 start 4 stop 5 restart 6 end 复制代码
语法 : tail destination
默认状况会展现文件的末尾10行。 -n 行数,显示最后n行。
➜ apache tail -n 2 tomcat
restart
end
复制代码
语法: head destination
默认状况会展现文件的开头10行。 -n 行数,显示开头n行。
➜ apache head -n 2 tomcat
text
text
复制代码
默认状况下,文件的数据展现是按照原顺序展现的。sort命令能够对文本文件中的数据进行排序。sort默认会把数据当成字符处理。
语法: sort destination
sort -n 因此排序数字时须要用-n,它的含义是说当前排序是的数字。
sort -M 好比月份Jan、Feb、Mar,若是但愿它按照月份排序,加入-M就会按照月份的大小来排序。
语法: grep [options] pattern [file]
该命令会查找匹配执行模式的字符串的行,并输出。
➜ apache grep start tomcat
start
restart
复制代码
-v 反向搜
➜ apache grep -v start tomcat text text 复制代码stop end 复制代码
-n 显示行号
-c 显示匹配的行数
好比以.gz的格式举例。
压缩语法: gzip destination
➜ apache gzip tomcat
➜ apache ls
tomcat.gz
复制代码
解压语法: gunzip destination
➜ apache gunzip tomcat.gz
➜ apache ls
tomcat
复制代码
虽然zip命令能压缩和解压单个文件,可是更多的时候普遍使用tar命令来作归档。
语法: tar function [options] obj1 obj2
➜ apache tar -cvf service.tar service1 service2 // 建立规定文件service.tar
a service1
a service2
➜ apache tar -tf service.tar //查看文件中的目录内容
service1
service2
➜ apache tar zxvf service.tar //解压
x service1
x service2
复制代码
history 命令能够展现你用的命令的历史记录。
4463 touch service1 service2
4464 ls
4465 tar -cvf service.tar service1 service2
4466 tar -tf service.tar
4467 tar zxvf service
4468 tar zxvf service.t
4469 tar zxvf service.tar
4470 ls
4471 tar -zxvf service.tar
4472 ls
复制代码
alias -p 查看当前可用别名
[root@iz2ze76ybn73dvwmdij06zz ~]# alias -p
alias cp='cp -i'
alias egrep='egrep —color=auto'
alias fgrep='fgrep —color=auto'
alias grep='grep —color=auto'
alias l.='ls -d .* —color=auto'
alias ll='ls -l —color=auto'
复制代码
alias li = 'ls -li' 建立别名
bash shell用一个叫做环境变量(environment variable)的特性来存储有关shell会话和工做环境的信息。这项特性容许你在内存中存储数据,以便程序或shell中运行的脚本可以轻松访问到它们。这也是存储持久数据的一种简便方法。
在bash shell中,环境变量分为两类:
全局变量:对于 shell会话和全部生成的子shell都是可见的。 局部变量: 只对建立他们的shell可见。
/etc/passwd存储来一些用户有关的信息。
[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
复制代码
文件信息包括以下内容。
[root@iz2ze76ybn73dvwmdij06zz ~]# useradd -D//查看系统默认建立用户信息 GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@iz2ze76ybn73dvwmdij06zz ~]# useradd xiaoka//添加用户 复制代码[root@iz2ze76ybn73dvwmdij06zz /]# userdel xiaoka//删除用户 复制代码
[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
[root@iz2ze76ybn73dvwmdij06zz ~]# groupadd java //建立组
[root@iz2ze76ybn73dvwmdij06zz ~]# groupdel java //建立组
复制代码
[root@iz2ze76ybn73dvwmdij06zz xiaoka]# ls -l
总用量 0
-rw-r—r— 1 root root 0 4月 21 13:17 a
-rw-r—r— 1 root root 0 4月 21 13:17 b
-rw-r—r— 1 root root 0 4月 21 13:17 c
-rw-r—r— 1 root root 0 4月 21 13:17 d
-rw-r—r— 1 root root 0 4月 21 13:17 e
复制代码
一、文件类型:
二、访问权限符号:
若没有某种权限,在该权限位会出现单破折线。
三、这3组权限分别对应对象的3个安全级别:
chmod options mode file
好比给文件附加能够执行权限:
[root@xiaoka ~]# chmod +x filename
复制代码
[root@xiaoka ~]# sh sleep.sh
hello,xiaoka
[root@xiaoka ~]# ./sleep.sh
hello,xiaoka
复制代码
列出已经安装的包: yum list installed
安装软件: yum install package_name
更新软件: yum update package_name
卸载软件:yum remove package_name //只删除软件包保留数据文件和配置文件
若是不但愿保留数据文件和配置文件
能够执行:yum erase package_name
tar -zxvf xx.gz //解包
cd xx
./configure
make
make install
复制代码
操做模式:
基础操做:
vim提供了一些可以提升移动速度的命令:
退出vim:
df 能够查看全部已挂在磁盘的使用状况。
-m 用兆字节,G代替g字节
[root@iz2ze76ybn73dvwmdij06zz ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1931568 0 1931568 0% /dev
tmpfs 1940960 0 1940960 0% /dev/shm
tmpfs 1940960 720 1940240 1% /run
tmpfs 1940960 0 1940960 0% /sys/fs/cgroup
/dev/vda1 41152812 9068544 30180560 24% /
tmpfs 388192 0 388192 0% /run/user/0
复制代码
默认状况,du会显示当前目录的全部文件、目录、子目录的磁盘使用状况。
[root@iz2ze76ybn73dvwmdij06zz src]# du
4 ./debug
4 ./kernels
12
复制代码
ps它能输出运行在系统上的全部程序的许多信息。
默认状况下ps值显示运行在当前控制台下的当前用户的进程。
[root@iz2ze76ybn73dvwmdij06zz ~]# ps
PID TTY TIME CMD
10102 pts/0 00:00:00 bash
10131 pts/0 00:00:00 ps
复制代码
与ps相比,top能够实时监控进程信息。
平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统 的负载越高。因为进程短时间的突发性活动,出现最近1分钟的高负载值也很常见,但若是近15分 钟内的平均负载都很高,就说明系统可能有问题。
在一个终端中, Ctrl + c
经过这个命令许多(不是所有)命令行程序均可以被中断。
[root@iz2ze76ybn73dvwmdij06zz ~]# ./sleep.sh &
复制代码
此时,进程并不能被Ctrl + c 中断。
kill命令被用来给程序发送信号。若是没有指定信号,默认发送TERM(终止)信号。
语法 : kill [-signal] PID …
ping。这个 ping 命令发送一个特殊的网络数据包(叫作 IMCP ECHO REQUEST)到一台指定的主机。大多数接收这个包的网络设备将会回复它,来容许网络链接验证。
一旦启动,ping会持续在特定时间(默认1秒)发送数据包。
netstat -ntulp|grep 8080
[root@iz2ze76ybn73dvwmdij06zz ~]# netstat -ntulp|grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4517/java
复制代码
参数说明:
find 程序能基于各类各样的属性,搜索一个给 定目录(以及它的子目录),来查找文件。
find 命令的最简单使用是,搜索一个或多个目录。
普通查找,按照name查找:
[root@iz2ze76ybn73dvwmdij06zz ~]# find -name xiaoka
./xiaoka
复制代码
文件类型查找:
好比,输出咱们的家目录文件数量
[root@iz2ze76ybn73dvwmdij06zz ~]# find ~|wc -l
17130
复制代码
根据文件类型查:
[root@iz2ze76ybn73dvwmdij06zz ~]# find ~ -type d | wc -l
7340
复制代码
find支持的类型: b 块设备文件、 c 字符设备文件、d 目录、f 普通文件、l 符号连接
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname//查看当前主机名
iz2ze76ybn73dvwmdij06zz
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname xiaoka//修改当前主机名
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname
xiaoka
复制代码
你们知道通常来说命令重启就会失效,目前基本上用的centos7的比较多,两种方式能够支持重启生效。
1、命令
[root@iz2ze76ybn73dvwmdij06zz ~]# hostnamectl set-hostname xiaoka
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname
xiaoka
[root@xiaoka ~]#
复制代码
2、修改配置文件:/etc/hostname
[root@xiaoka ~]# vim /etc/hostname
复制代码
iptables -I INPUT -s ip -p tcp —dport 8080 -j REJECT
复制代码
/etc/hosts
只打印第5行:
➜ apache sed -n "5p" tomcat
stop
复制代码
删除第一行:
[root@xiaoka ~]# cat story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, “I caught this kid first, and so this is mine.”
[root@xiaoka ~]# cat story
They sprang upon it at the same time.
The lion said to the bear, “I caught this kid first, and so this is mine.”
复制代码
替换字符串:
➜ apache cat story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, “I caught this kid first, and so this is mine.”
➜ apache sed 's#this#that#g' story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, “I caught that kid first, and so that is mine.”
复制代码
文件tomcat中内容:
➜ apache cat tomcat
text21
text22
text23
start
stop
restart
end
复制代码
➜ apache head -3 tomcat
text21
text22
text23
➜ apache sed -n '1,3p' tomcat
text21
text22
text23
➜ apache awk 'NR>=1&&NR<=3' tomcat
text21
text22
text23
复制代码
➜ apache awk 'NR==3{print $(NF-2)}' story
this
➜ apache cat story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, “I caught this kid first, and so this is mine.”
复制代码
参考:
《鸟哥Linux私房菜》
《快乐的命令行》
《Linux命令行与shell脚本编程大全(第3版)》
《Linux从入门到精通》
百度百科
公众号:《马里奥玩Python》