按键 | 作用 |
---|---|
Ctrl+c | 结束 |
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a | 将光标移至输入行头,相当于Home键 |
Ctrl+e | 将光标移至输入行末,相当于End键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
Shift+PgDn | 将终端显示向下滚动 |
2.通配符
主要用于模糊查询,*和?
字符 | 含义 |
---|---|
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[^list] | 匹配 除 list 中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9][a-z] |
{string1,string2,…} | 匹配 string1 或 string2 (或更多)其一字符串 |
{c1…c2} | 匹配 c1-c2 中全部字符 如{1…10} |
$ touch rice.txt march.txt
$ ls *.txt
march.txt rice.txt
$ find *.txt
march.txt
rice.txt
man
查看帮助$ man <command_name>
通常情况下,man 手册里面的内容都是英文的,这就要求你有一定的英文基础。man 手册的内容很多,涉及了 Linux 使用过程中的方方面面。为了便于查找,man 手册被进行了分册(分区段)处理,在 Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为 8 个区段,安排如下:
区段 | 说明 |
---|---|
1 | 一般命令 |
2 | 系统调用 |
3 | 库函数,涵盖了 C 标准函数库 |
4 | 特殊文件(通常是/dev 中的设备)和驱动程序 |
5 | 文件格式和约定 |
6 | 游戏和屏保 |
7 | 杂项 |
8 | 系统管理命令和守护进程 |
要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:
$ man 1 ls
$ who am i
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 同am i,mom likes |
-q | 打印当前登录用户数及用户名 |
-u | 打印当前登录用户登录信息 |
-r | 打印运行等级 |
su -l lilei
切换到lilei
在 Linux 里面如何知道自己属于哪些用户组呢?
删除/添加用户是很简单的事:
$ sudo adduser lilei
$ sudo deluser lilei --remove-home
使用--remove-home
参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。
查看文件权限
$ ls -l
$ ls -al
# 查看某一个目录的完整属性,而不是显示目录里面的文件属性
$ ls -dl <目录名>
# 显示所有文件大小,并以普通人类能看懂的方式呈现
$ ls -asSh
变更文件所有者
$ cd /home/lilei
$ ls iphone11
$ sudo chown shiyanlou iphone11
新建,复制,删除文件及目录
$ cd ~
$ touch test
$ mkdir mydir
$ mkdir -p father/son/grandson
对文件的复制操作
$ cp test father/son/grandson
直接对文件夹复制会出现错误,需要-r或-R参数,表示递归复制。
$ cd /home/shiyanlou
$ mkdir family
$ cp -r father family
删除
$ rm test
$ rm -f test #遇到只读文件时的强制删除
$ rm -r family #递归删除文件夹
$ rm -rf family #强制递归删除
剪切 重命名
$ cd /home/shiyanlou/
#使用通配符批量创建 5 个文件:
$ touch file{
1..5}.txt
#批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename 's/\.txt/\.c/' *.txt
#批量将这 5 个文件,文件名和后缀改为大写:
$ rename 'y/a-z/A-Z/' *.c
查看文件
cat
:正序显示
tac
:倒序显示
nl
:带行数打印
nl参数
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
-b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示
-n rn:在行号字段最右边显示,且不加 0
-n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
#带行数的打印
$ cat -n passwd
$ tail /etc/passwd
$ tail -n 1 /etc/passwd
查看文件类型
file
:
与 Windows 不同的是,如果你新建了一个 shiyanlou.txt 文件,Windows 会自动把它识别为文本文件,而 file 命令会识别为一个空文件。这个前面我提到过,在 Linux 中文件的类型不是根据文件后缀来判断的。当你在文件里输入内容后才会显示文件类型。
添加自定义路径到“PATH”环境变量
$ PATH=$PATH:/home/shiyanlou/mybin
这里一定要使用绝对路径,但仅仅在本次终端有效,如果想要每次启动shell时都有效,可以在每次启动时自动执行添加上面添加自定义路径到PATH的命令
在每个用户的 home 目录中有一个 Shell 每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。实验楼的环境使用的 Shell 是 zsh,它的配置文件是 .zshrc,相应的如果使用的 Shell 是 Bash,则配置文件为 .bashrc。它们在 etc 下还都有一个或多个全局的配置文件,不过我们一般只修改用户目录下的配置文件。Shell 的种类有很多,可以使用 cat /etc/shells 命令查看当前系统已安装的 Shell
$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
搜索文件
与搜索相关的命令常用的有 whereis
,which
,find
和 locate
。
whereis简单快速
whereis 只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)。如果想要获得更全面的搜索结果可以使用 locate 命令。
locate快而全
使用 locate 命令查找文件也不会遍历硬盘,它通过查询 /var/lib/mlocate/mlocate.db
数据库来检索信息。不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令来更新数据库。所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令(在我们的环境中必须先执行一次该命令)。注意这个命令也不是内置的命令,例如在我们的环境中就需要手动安装,然后执行更新。
$ sudo apt-get update
$ sudo apt-get install locate
$ sudo updatedb
which小而精
which 本身是 Shell 内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的程序,因为它只从 PATH 环境变量指定的路径中去搜索命令并且返回第一个搜索到的结果。也就是说,我们可以看到某个系统命令是否存在以及执行的到底是哪一个地方的命令。
find精而细
这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录。这是 find 命令最常见的格式,千万记住 find 的第一个参数是要搜索的地方。命令前面加上 sudo 是因为 shiyanlou 只是普通用户,对 /etc 目录下的很多文件都没有访问的权限,如果是 root 用户则不用使用。
$ sudo find /etc/ -name interfaces
注意 find 命令的路径是作为第一个参数的, 基本命令格式为 find [path][option] [action]
与时间相关的命令参数:
参数 说明
-atime 最后访问时间
-ctime 最后修改文件内容的时间
-mtime 最后修改文件属性的时间
下面以 -mtime 参数举例:
-mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
-mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
-mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
-newer file:file 为一个已存在的文件,列出比 file 还要新的文件名
列出 home 目录中,当天(24 小时之内)有改动的文件:
$ find ~ -mtime 0
列出用户家目录下比 /etc 目录新的文件:
$ find ~ -newer /etc
找出 /etc/ 目录下的所有以 .list 结尾的文件。
$ locate /etc/\*.list
$ sudo find /etc/ -name \*.list
文件的打包和解压
$ cd /home/shiyanlou
$ zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
$ du -h shiyanlou.zip
$ file shiyanlou.zip
-r
参数表示递归打包包含子目录的全部内容,-q
参数表示为安静模式,即不向屏幕输出信息,-o
,表示输出文件,需在其后紧跟打包输出文件名。后面使用 du
命令查看打包后文件的大小,-l
参数将 LF
转换为CR+LF
来达到以上目的。
解压:
将 shiyanlou.zip 解压到当前目录:
$ unzip shiyanlou.zip
使用安静模式,将文件解压到指定目录:
$ unzip -q shiyanlou.zip -d ziptest
上述指定目录不存在,将会自动创建。如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:
$ unzip -l shiyanlou.zip
注意: 使用 unzip 解压文件时我们同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。
使用 -O(英文字母,大写 o)参数指定编码类型:
unzip -O GBK 中文压缩文件.zip
tar:
$ cd /home/shiyanlou
$ tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop
# 压缩
$ tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop
# 解压
$ tar -xzf shiyanlou.tar.gz
-c: 创建压缩未见
-z :使用 gzip压缩
-f 压缩文件命名
常用命令:
zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something.zip
指定路径:-d 参数
tar:
打包:tar -cf something.tar something
解包:tar -xf something.tar
指定路径:-C 参数
作者:千万201904141704267
链接:https://www.nowcoder.com/discuss/472666?type=all&order=time&pos=&page=1&channel=1009&source_id=search_all
来源:牛客网
1.自我介绍
2.实习经历,负责的业务
3.linux相关知识
kill: kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -l [信号声明]
向一个任务发送一个信号。
向以 PID 进程号或者 JOBSPEC 任务声明指定的进程发送一个以
SIGSPEC 信号声明或 SIGNUM 信号编号命名的信号。如果没有指定
SIGSPEC 或 SIGNUM,那么假定发送 SIGTERM 信号。
选项:
-s sig SIG 是信号名称
-n sig SIG 是信号编号
-l 列出信号名称;如果参数后跟 `-l'则被假设为信号编号,
而相应的信号名称会被列出
Kill 成为 shell 内嵌有两个理由:它允许使用任务编号而不是进程号,
并且在可以创建的进程数上限达到是允许进程被杀死。
退出状态:
返回成功,除非使用了无效的选项或者有错误发生。
4.介绍项目
5.tcp三次握手四次挥手,
为什么是三次握手;time_wait状态,close_wait状态过多该怎么处理
三次握手的原因:既要保证数据可靠传输,又要提高传输的效率
6.编程,熟悉的语言
作者:Ingram_Zhao
链接:https://www.nowcoder.com/discuss/369542?type=all&order=time&pos=&page=1&channel=1009&source_id=search_all
来源:牛客网
PS:牛客网关于运维开发相关岗位面经和帖子是在太少了,然后与同样想要从事SRE和运开岗位的小伙伴分享
公司部门及团队:阿里巴巴-CBU-SRE团队
岗位:SRE开发工程师
面试时间:2020/2/21 90min
一面:
网络相关:
TCP和UDP区别
TCP三次握手和四次挥手
最后一次ACK包丢失会进入什么样的一个状态
关于TIME_WAIT状态等待2MSL解决什么问题
滑动窗口
DNS使用的到协议(TCP/UDP分别在什么情况下使用)
广播风暴产生的原因及解决方法
TLS/SSL处于OSI哪一层
传输层
http/https区别,https请求流程(加密方式)
系统相关:
进程/线程
线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
调度和切换:线程上下文切换比进程上下文切换要快得多
Apache工作机制和Nginx工作机制对比分析
进程间通信方式(管道的应用场景)
Linux文件权限755(文件目录x权限区别)
rwx 4 2 1
cpu load x (x这个值代表什么意思)
如何查看进程使用到的文件
软硬链接区别(实现机制)
kill和kill -9的区别,有没有更优雅的方式kill进程
buffer和cache的区别
Shell脚本中的return和exit作用及return的取值范围
容器相关:
容器和VM的区别
资源隔离和资源限制相关问题
数据结构和算法:
元组和链表的区别
hash表是什么,如何解决hash冲突
快速排序和冒泡排序的时间复杂度和空间复杂度及稳定性
快速排序和冒泡排序的原理,还有比冒泡排序更慢的算法吗
Python相关:
生成器和迭代器
Python伪线程
在线编程:
伯乐测评系统(三选一)
选的冒泡和快排
腾讯云-技术咨询
时间:2020/02/28 20min
一面:
校园经历
实习经历
获奖证书
表达沟通
详细说说STP生成树协议
腾讯云/阿里云/AWS负载均衡服务的区别
如何理解云计算的
职业发展
百度-手机百度-SRE
一面:
时间:2020/2/29 40min
1.自我介绍
2.实习经历(聊的比较长)
3.子网掩码的作用
4.负载均衡
5.负载均衡算法
6.Linux启动流程
7.Linux常用命令(怎么看平均负载)
8.如何找出日志中 “www.baidu.com” 出现的次数
9.Python模块的使用(简历中写到的)
10.Python中元组和列表的相同点和区别
11.Redis持久化存储机制
12.链表相交问题及空间复杂度
阿里云-混合云
2020/3/7 35min
思路:判断单链表是否有环
思路:单链表逆转
思路:快排
思路:找到第K大的值
数据结构中“堆”的概念
TCP三次握手四次挥手
拥塞控制
解释vlan,应用程序中关于vlan的使用
Trunk口
Python切片
装饰器和闭包
Kubernetes控制器有哪些
服务发现怎么玩的(service keub-proxy)
iptables四表五链
持久化存储方式(本地 pv pvc)
daemoset 和 statefulset
线程池实现原理
阿里云-混合云
岗位:基础平台开发
时间:2020/3/3 40min
学校课程
冒泡排序
ansible如何去验证(思路)
nova工作流程
Keepalived高可用服务
关于Gitlab调优
Python数据类型,元组和列表操作
Python协程相关
Python多进程
最喜欢的公众号
最近看的一篇文章
开发小哥:为什么想做运维…
部门:腾讯视频
岗位:业务运维
一面:
时间:2020/3/10 16:00 15min
自我介绍
挑选个实习经历说说
职业发展
语言 项目
TCP三次握手
二面:
时间:2020/3/11 14:30 55min
项目经历1
项目经历2
实习经历1
实习经历2
系统调优
Keepalived和LVS原理
场景题1:服务器CPU负载很高,但是使用率不高
场景题2:如果腾讯视频有大量用户觉得卡
三面:
时间:2020/3/12 11:00 20min
校园经历
成绩和学习课程
问了几个问题(操作系统) C不会
4.兴趣爱好
HR面:
时间:2020/3/16 17:30 30min
校园经历
实习经历
项目经历
兴趣爱好
阿里云-运维开发
一面:
在线编程
实习经历
3.了解Java吗?不会
百度-手机百度-SRE
二面:应该是被捞的选手
时间:2020/3/18 30min
自我介绍
进程和线程
多进程和多线程(Web Server怎么选)
快排原理及时间复杂度
创建0-99个空文件
判断一个文件中的重复IP地址
如何反转一个整数
场景分析:AB模块,B模块原本每秒能接受1000个A的消息,现在只能收到10个
项目经历(选一个聊)
美团-基础平台-SRE
2020/3/20 60min
一面:
自我介绍
TCP三次握手和四次挥手
docker如何限制cpu资源
docker的namespace
实习经历 & 项目经历
场景分析:共享桌面
学习方法 & 学习途径