Linux面试
# 不知道哪里抄来的
# 绝对路径用什么符号表示?当前目录、上层目录用什么表示? 主目录用什么表示? 切换目录用什么命令?
绝对路径: 如/etc/init.d 当前目录和上层目录: ./ ../ 主目录: ~/ 切换目录: cd
# 怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程: ps 执行
退出: exit
查看当前路径: pwd
# 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当 前用户 id?查看指定帮助用什么命令?
清屏: clear
退出当前命令: ctrl+c 彻底退出
执行睡眠 : ctrl+z 挂起当前进程 fg 恢复后台
查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组 及用户名
查看指定帮助: 如 man adduser 这个很全 而且有例子; adduser --help 这 个告诉你一些常用参数; info adduesr;
# Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
ls 执行的功能: 列出指定目录中的目录,以及文件
哪些参数以及区别: a 所有文件 l 详细信息,包括大小字节数,可读可写可执行 的权限等
# 建立软链接(快捷方式),以及硬链接的命令。
软链接: ln -s slink source
硬链接: ln link source
# 目录创建用什么命令?创建文件用什么命令?复制文件用什 么命令?
创建目录: mkdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件 输出,都会创建文件
复制文件: cp
# 文件权限修改用什么命令?格式是怎么样的?
文件权限修改: chmod
格式如下: chmodu+xfile 给 file 的属主增加执行权限 chmod 751 file 给 file 的属主分配 读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户 分配执行(1)的权限
chmodu=rwx,g=rx,o=xfile 上例的另一种形式 chmod =r file 为所有用户分配 读权限
chmod444file 同上例 chmod a-wx,a+r file 同上例 $ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属 主分配读的权限
# 查看文件内容有哪些命令可以使用?
vi 文件名 #编辑方式查看,可修改
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数
# 随意写文件命令?怎么向屏幕输出带空格的字符串,比如” hello world”?
写文件命令:vi
向屏幕输出带空格的字符串:echo hello world
# 终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下 的哪个命令?
终端 /dev/tty
黑洞文件 /dev/null
# 移动文件用哪个命令?改名用哪个命令?
mv mv
# 复制文件用哪个命令?如果需要连同文件夹一块复制呢? 如果需要有提示功能呢?
cp cp -r
# 删除文件用哪个命令?如果需要连目录及目录下文件一块 删除呢?删除空文件夹用什么命令?
rm
rm -r
rmdir
# Linux 下命令有哪几种可使用的通配符?分别代表什么含 义?
“?”可替代单个字符。
“*”可替代任意多个字符。
方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]
# 用什么命令对一个文件的内容进行统计?(行号、单词数、 字节数)
wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。
# Grep 命令有什么用? 如何忽略大小写? 如何查找不含 该串的行?
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印 出来。
grep [stringSTRING] filename grep [^string] filename
# Linux 中进程有哪几种状态?在 ps 显示出来的信息中, 分别用什么符号表示的?
1、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
2、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而 进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个 特殊的状态。 正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
3、就绪状态:在 run_queue 队列里的状态
4、运行状态:在 run_queue 队列里的状态
5、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起
6、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程 的尸体(task_struct)也释放掉
7、退出状态
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效)
X 死掉的进程
# 怎么使一个命令在后台运行?
一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)
# 利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进 程的信息?
ps -ef (system v 输出)
ps -aux bsd 格式输出
ps -ef | grep pid
2
3
# 哪个命令专门用来查看后台任务?
job -l
# 把后台任务调到前台执行使用什么命令?把停下的后台任务 在后台执行起来用什么命令?
把后台任务调到前台执行 fg
把停下的后台任务在后台执行起来 bg
2
# 终止进程用什么命令? 带什么参数
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
kill-9 pid
2
# 怎么查看系统支持的所有信号?
kill -l
# 搜索文件用什么命令? 格式是怎么样的?
find <指定目录> <指定条件> <指定动作>
whereis 加参数与文件名
locate 只加文件名
find 直接搜索磁盘,较慢。
find / -name "string*"
2
3
4
5
# 查看当前谁在使用该主机用什么命令? 查找自己所在的终 端信息用什么命令?
查找自己所在的终端信息:who am i
查看当前谁在使用该主机:who
2
# 使用什么命令查看用过的命令列表?
history
# 使用什么命令查看磁盘使用空间? 空闲空间呢?
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G
44% /
/dev/hda1 494M 19M 450M 4% /boot
2
3
4
5
# 使用什么命令查看网络是否连通?
netstat
# 使用什么命令查看 ip 地址及接口信息?
ifconfig
# 查看各类环境变量用什么命令?
查看所有 env
查看某个,如 home: env $HOME
2
# 通过什么命令指定命令提示符?
\u:显示当前用户账号
\h:显示当前主机名
\W:只显示当前路径最后一个目录
\w:显示当前绝对路径(当前用户目录会以~代替)
$PWD:显示当前全路径
$:显示命令行’$'或者’#'符号
#:下达的第几个命令
\d:代表日期,格式为 week day month date,例如:"MonAug1"
\t:显示时间为 24 小时格式,如:HH:MM:SS
\T:显示时间为 12 小时格式
\A:显示时间为 24 小时格式:HH:MM
\v:BASH 的版本信息 如 export PS1=’[\u@\h\w#]$‘
2
3
4
5
6
7
8
9
10
11
12
# 查找命令的可执行文件是去哪查找的? 怎么对其进行设置 及添加?
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
//补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。
-b 只查找二进制文件。
-B <目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的
路径名称。
-m 只查找说明文件。
-M <目录> 只在设置的目录下查找说明文件。-s 只查找原始代码文件。
-S <目录> 只在设置的目录下查找原始代码文件。 -u 查找不包含指定类型的文件
w -h ich 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n 参数相同,但此处的包括了文件的路径。 -w 指定输出时栏位的宽度。
-V 显示版本信息
2
3
4
5
6
7
8
9
10
11
12
# 通过什么命令查找执行命令?
which 只能查可执行文件
whereis 只能查二进制文件、说明文档,源文件等
2
# 怎么对命令进行取别名?
alias la='ls -a'
# du 和 df 的定义,以及区别?
du 显示目录或文件的大小
df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
2
3
# awk 详解
awk '{pattern + action}' {filenames}
#cat /etc/passwd |awk -F ':' '{print 1"\t"7}' //-F 的意思是以':'分隔 root
/bin/bash
daemon /bin/sh 搜索/etc/passwd 有 root 关键字的所有行
#awk -F: '/root/' /etc/passwd root:x:0:0:root:/root:/bin/bash
2
3
4
5
# 当你需要给命令绑定一个宏或者按键的时候,应该怎么做 呢?
可以使用 bind 命令,bind 可以很方便地在 shell 中实现宏或按键的绑定。 在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。
比如获取 F12 的字符序列获取方法如下:先按下 Ctrl+V,然后按下 F12 .我们就可 以得到 F12 的字符序列 ^[[24~。 接着使用 bind 进行绑定。
bind ‘”\e[24~":"date"'
注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。 【附】也可以使用 showkey -a 命令查看按键对应的字符序列。
# 如果一个 linux 新手想要知道当前系统支持的所有命令的 列表,他需要怎么做?
使用命令 compgen -c
,可以打印出所有支持的命令列表。
# 如果你的助手想要打印出当前的目录栈,你会建议他怎么 做?
使用 Linux 命令 dirs
可以将当前的目录栈打印出来。
[root@localhost ~]# dirs
/usr/share/X11
2
【附】:目录栈通过 pushd popd 来操作。
# 你的系统目前有许多正在运行的任务,在不重启机器的条 件下,有什么方法可以把所有正在运行的进程移除呢?
使用 linux 命令 ’disown -r ’可以将所有正在运行的进程移除。
# bash shell 中的 hash 命令有什么作用?
linux 命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。
[root@localhost ~]# hash
hits command
2 /bin/ls
2 /bin/su
2
3
4
# 哪一个 bash 内置命令能够进行数学运算
bash shell 的内置命令 let 可以进行整型数的数学运算。
#! /bin/bash
let c=a+b
2
# 怎样一页一页地查看一个大文件的内容呢?
通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个 需要.
[root@localhost ~]# cat file_name.txt | more
# 数据字典属于哪一个用户的?
数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动 创建的
# 怎样查看一个 linux 命令的概要与用法?假设你在/bin 目 录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用 和用法呢?
使用命令 whatis 可以先出显示出这个命令的用法简要,比如,你可以使用 whatis zcat 去查看‘zcat’的介绍以及使用简要。
[root@localhost ~]# whatis zcat
zcat [gzip] (1) – compress or expand files
2
# 使用哪一个命令可以查看自己文件系统的磁盘空间配额 呢?
使用命令 repquota 能够显示出一个文件系统的配额信息 【附】只有 root 用户才能够查看其它用户的配额。
# 牛客上总结的
# 怎么查看某个进程(tomcat)的进程号?输出只包含该进程的一行信息
ps -ef | grep nginx
如果只需要进程号可以这样
ps -ef | grep nginx |awk '{print $2}'
# Linux 中如何读取文件的倒数 n 行?
命令如下
cat 1.txt | tac | sed -n '3p'
tail -3 1.txt | head -1
2
# 常见的Linux查看资源的命令
使用 gnome-system-monitor
可以以图形的方式来查看进程
使用PS来查看进程 ps 查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定”A”参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H 显示树状结构,表示程序间的相互关系。 ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s 采用程序信号的格式显示程序状况。 ps S 列出程序时,包括已中断的子程序资料。 ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 ps u 以用户为主的格式来显示程序状况。 ps x 显示所有程序,不以终端机来区分。 ps aux –sort +/-%cpu 进程按指定方式排序
监控系统资源
top命令功能十分强大,但是它的缺点是会消耗很多系统资源 free命令用来显示内存的使用情况 vmstat展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 iostat监控系统设备的IO负载情况
查看系统负载
使用uptime查看系统的负载情况
在linux系统中,有一种说法,当load avarage ❤️ 系统良好,大于5 则有可能有严重的性能问题,这个值还应当除以CPU数目 除了命令,/proc目录还给我们提供了很多查看信息的文件 cat /proc/loadavg:直接查看系统平均负载,查看结果除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID
查看硬盘占用
df 检查linux服务器的文件系统的磁盘空间占用情况 du 文件的块的数量,如果参数是一个目录,就要显示该目录内的所有文件
查看磁盘信息
lsblk、fdisk
查看内核信息
lsmod查看内核模块 modinfo查看内核某个模块信息
查看CPU信息
lscpu 也可以使用cat /proc/cpuinfo 查看每个cpu信息
查看网卡信息
ip addr show、ifconfig、lspci
# traceroute命令是啥
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。