快捷键
终端
调出终端快捷键:Ctrl + Alt +T
打开文件夹,右击,选择 “在终端打开”
退格
通常用 Backspace 删除字符,但实际上 Ctrl + / 也可以用于字符删除。
中断
- ctrl+c 是制结束当前进程(万能)
- ctrl+d 是发送一个二进制的 EOF 的信号,让程序自行终止(但不是所有程序都会响应该快捷键)
挂起
ctrl+z的是将任务 中止/暂停,但是此任务并没有结束,它仍然在进程中,只是维持 挂起/暂停 的状态。
用户可以使用 fg/bg 操作继续前台或后台的任务
- fg命令重新启动前台被中断的任务
- bg命令把被中断的任务放在后台执行.
运维相关
系统
命令 | 含义 |
---|---|
uname -a | 查看内核版本(x86 or x86_64) |
cat /proc/version | 查看linux内核版本及发布日期 |
cat /etc/issue | 查看linux版本、换行符 |
cat /etc/lsb-release | 查看ubuntu版本 |
cat /etc/redhat-release | 查看centos版本 |
CPU
lscpu
lscpu
用来显示cpu的基本信息,它是从 sysfs
和 /proc/cpuinfo
收集来cpu体系结构信息
cat /proc/cpuinfo
也会打印cpu的基本信息。如果是 N核M线程,就会打印M条
查看android设备的cpu信息
adb shell
cat /proc/cpuinfo
top
top命令经常用来监控linux的系统状况,比如cpu、内存的使用
top的升级版是htop
gnome-system-monitor
如果时图形界面,可以用 gnome-system-monitor
indicator-systemonitor
还有一种嵌入到标题栏显示的,使用起来更方便
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor
indicator-sysmonitor &
& 表示在后台启动
右击 indicator-sysmonitor,勾选开机启动,输出格式修改为 cpu: {cpu} mem: {mem} net: {net}
点击保存,显示如下
内存
查看设备内存总量
adb shell
grep MemTotal /proc/meminfo
free 命令显示当前系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存
语法 free [options]
选项 | 含义 |
---|---|
-b | 以Byte为单位显示内存使用情况 |
-k | 以KB为单位显示内存使用情况 |
-m | 以MB为单位显示内存使用情况 |
-s N | 每N秒打印一次 |
-t | 显示RAM+swap的总额 |
-V | 显示版本信息 |
清理缓存
/proc
是一个虚拟文件系统,我们可以通过对它的读写操作,做为与 kernel 实体间进行通信的一种手段
参考地址 https://bbs.archlinux.org/viewtopic.php?id=127049
参考地址 https://linux-mm.org/Drop_Caches
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/drop_caches.c
drop_caches
这个文件实际上只有写有意义, 读并没有意义。因为它不是一个参数设置,而只是一个清空缓存的指令。 写入值时修改的是sysctl_drop_caches
全局变量,最初对值无限制,所以可以是0,但输入0无意义,不会引起任何操作。 后来限制为1-3,最新的代码是限制为1-4,增加了输入4的支持。
- 0 无效参数
- 1 释放 pagecache
- 2 释放 dentries、inodes
- 3 释放 pagecache、dentries 和 inodes
- 4 3.x内核新增(意义不明)
sudo su
echo 3 > /proc/sys/vm/drop_caches
或
sysctl -w vm.drop_caches=3
网上也有说用 sync 来释放内存的,但实际测试并无效果
磁盘管理
df
df 用来检查Linux服务器的文件系统的磁盘占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息
du
du 命令用来查看 文件和文件夹 占用磁盘空间的情况
- 使用
ls -lh
或ll -h
能查看文件大小,但文件夹一致均为4K - du 可以带文件路径,如果不带则为统计当前目录
- max-depth 参数控制递归统计多少层级(0表示当前文件夹总大小,1表示当前文件夹和其子目录总大小)
lsblk
lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系
fsck
在 Linux 中修复闪存盘或其它类型驱动器最为简单的方法就是使用 fsck 工具,此工具是删除坏块、解决「不可读」问题和修复大多数文件系统问题的强大工具。要删除坏文件块,请在特定分区(例如/dev/sdc1)或整块磁盘(例如/dev/sdc)上执行 fsck 命令, 一旦完成,你将获得一个健康的 Linux 分区 sudo fsck /dev/sdb
fdisk
disk是Linux自带的硬盘分区工具,可以对硬盘进行分区,或者对硬盘分区进行调整。
win + A ,输入 disk,可以打开磁盘管理,查看所有的磁盘
删除原分区并创建分区
分区重新创建后,需要将其格式化才能继续使用 mkfs
dd
当出现 U 盘已经完全不可读,里面的数据也无价值时,最佳的修复办法就是使用 dd 命令将 U 盘完全清零。清零USB驱动器 又称 低级格式化 sudo dd if=/dev/zero of=/dev/sdb
要运行很久很久。一般情况下没这必要,只需要快速格式化即可。
快速格式化
- FAT32
sudo mkfs.msdos 32 /dev/sdb1
- EXT4
sudo mkfs.ext4 /dev/sdb1
- NTFS
sudo mkfs.ntfs /dev/sdb1
手动挂载
mount -t ext4 /dev/sdb1 /mnt/sdb1
注意两点
/dev/sdb1
该文件必须存在,可以使用ls /dev
查看对应的名字- 挂载点
/mnt/sdb1
必须存在,若不存在,可使用mkdir
进行创建
文件描述符
lsof(list open files)是一个列出当前系统打开文件的工具。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
正因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
lsof 输出各列信息的意义如下:
- COMMAND:进程的名称 PID:进程标识符
- USER:进程所有者
- FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
文件被哪个进程占用
sudo fuser -v <文件路径>
查看进程
ps aux | grep <进程号>
查看开放端口
常用命令
- UPD类型的端口
netstat -nupl
- TCP类型的端口
netstat -ntpl
- 所有被打开的端口
netstat -anp
- 查看使用该端口的程序
lsof -i:$PORT
$PORT指的是对应的端口
参数含义
- a 表示所有
- n 表示不查寻dns
- t 表示tcp协议
- u 表示udp协议
- p 表示查寻占用程序
- l 表示查寻正在监听的程序
禁用端口
iptables -A INPUT -p tcp --dport $PORT -j DROP
iptables -A OUTPUT -p tcp --dport $PORT -j DROP
杀死进程
kill -9 $PID
$PID 表示进程号
清空回收站
sudo rm -rf ~/.local/share/Trash/*
防火墙
ufw
命令 | 含义 |
---|---|
sudo ufw status | 获取当前防火墙状态 |
sudo ufw enable . | 打开防火墙 |
sudo ufw disable | 关闭防火墙 |
声卡
alsamixer 是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个 switch 等等
远程控制 ssh
Ubuntu系统默认是没有SSH服务的,故要检查SSH服务是否已安装 ps -e | grep ssh
- ssh 表示 ssh-client 已启动
- sshd 表示 ssh-server 已启动
安装 ssh 服务端和客户端
sudo apt-get install openssh-client
sudo apt-get install openssh-server
安装完后,使用如下命令启动(或重启) sudo /etc/init.d/ssh start
ssh默认端口号为22,若需要修改端口号,编辑 /etc/ssh/sshd_config
文件
远程登陆 ssh <用户>@<IP地址>
操作文件
获取当前位置 pwd
创建文件夹 mkdir
mkdir <文件夹名>
创建多级目录(如果父目录不存在会报错)mkdir -p <文件夹路径>
p参数使得文件夹可以被递归创建
打开文件夹 nautilus
nautilus(鹦鹉螺)命令
命令 | 含义 |
---|---|
nautilus | 打开主目录 |
nautilus . | 打开当前目录 |
nautilus -q | 关闭所有文件夹 |
压缩解压
zip
zip [选项] 压缩包名 源文件或源目录列表
选项 | 含义 |
---|---|
-r | 递归压缩目录,将制定目录下的所有文件及其子目录全部压缩 |
-m | 将文件压缩之后,删除原始文件(相当于把文件移到压缩文件中) |
-v | 显示压缩过程的详细信息 |
-q | 在压缩的时候不显示命令的执行过程 |
-[1-9] | 压缩级别是从1~9的数字,1表示压缩速度最快,9表示压缩效果最好 |
-u | 更新压缩文件,即往压缩文件中添加新文件 |
unzip [选项] 压缩包名
选项 | 含义 |
---|---|
-d 目录名 | 将压缩文件解压到指定目录下 |
-n | 解压时并不覆盖已存在的文件 |
-o | 解压时覆盖已存在的文件(无需用户确认) |
-v | 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但不做解压操作 |
-t | 测试压缩文件有无损坏,但不解压 |
-x 文件列表 | 解压文件,但不包含文件列表中指定的文件 |
tar.gz
最常用的就是 tar -zvxf <压缩包名>.tar.gz
rar
ubuntu默认不支持解压rar,因为rar是非开源的加密算法。必须安装相应的组件 sudo apt-get install rar
- 压缩
rar a FileName.rar DirName
- 解压
rar x FileName.rar
iso
iso的解压也叫做挂在,流程是先创建一个空目录,然后把iso挂载到该目录下
mkdir <待挂载的空目录>
chmod 777 <待挂载的空目录>
sudo mount -o loop <xxx.iso> <待挂载的空目录>
文件拷贝
本地cp
cp –r <源文件> <目标地址>
远程scp
-
将本地文件复制到目标服务器
scp -r <待复制的文件或文件夹> root@<ip>:<目标地址>
-
将服务器文件复制到本地电脑
scp -r root@<ip>:<服务器地址> <复制到哪个位置>
文件查找
可执行文件搜索 whereis
whereis用于应用名搜索,搜索结果仅限于
- 二进制文件(-b)
- man说明文件(-m)
- 源代码文件(-s)
如果省略参数,则返回所有信息
文件名搜索 find
find 是在指定目录下查找,-name用来指定待搜索的文件名,支持通配符且只能全词匹配,格式如下:find <待搜索的目录> -name
查看文件内容
- 打印文件的所有内容(正序,从头到尾)
cat <文件>
(-n显示行号) - 打印文件的所有内容(逆序,从尾到头)
tac <文件>
(-n显示行号) - 打印文件前N行
head <文件> -n <N行>
(-n指定行数) - 打印文件倒数N行
tail <文件> -n <N行>
(-n指定行数) - 打印文件N行以后的内容
tail <文件> -n <N行>
(-n指定行数)
cat, head, tail 都是一次性打印操作,而 less 和 more 支持交互操作
- more 支持翻页显示,但不能后退
- less 是 more 的升级版本,支持前后翻页
less 和 more 的不同点
- less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
- less不必读整个文件,加载速度会比more更快
- less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
修改文件权限
Linux系统中的每个文件和目录都有访问许可权限,用来确定谁可以通过何种方式对文件和目录进行访问和操作。
chmod
功能:用于改变文件或目录的访问权限。
用法:sudo chmod[who][+ | – | =][mode]文件名
操作对象who可是下述字母中的任一个或者它们的组合:
- u 表示“用户(user)”,即文件或目录的所有者
- g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户
- o 表示“其他(others)用户”
- a 表示“所有(all)用户”。它是系统默认值
操作符号可以是:
- + 添加某个权限
- – 取消某个权限
- = 赋予给定权限并取消其他所有权限(如果有的话)
mode所表示的权限可用下述字母的任意组合:
- r 可读。
- w 可写。
- x 可执行。
- X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
- s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
- t 保存程序的文本到交换设备上。
- u 与文件属主拥有一样的权限。
- g 与和文件属主同组的用户拥有一样的权限。
- o 与其他用户拥有一样的权限。
- -c : 若该档案权限确实已经更改,才显示其更改动作
- -f : 若该档案权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
chown
功能:更改某个文件或目录的属主和属组
语法:sudo chown[选项]用户或组 文件
chgrp
功能:改变文件或目录所属的组
语法:sudo chgrp[选项]group filename
查看用户信息
id命令用于显示用户的ID,以及所属群组的ID
链接
创建软链接到 /usr/bin
sudo ln -s ~/Document/Postman/Postman /usr/bin/
管理应用
dpkg
rpm 是 redhat 系统的安装包
deb 是 debian 系统的安装包
在 ubuntu 下,一般使用 sudo apt install xxx
进行安装
如果要下载包,那么就下载 deb 类型的,用命令 sudo dpkg -i xxx.deb
进行安装
- 安装
sudo dpkg -i xxx.deb
- 查看已安装列表
sudo dpkg -l
- 卸载
sudo dpkg -r
已被加锁
如果上次安装被强制关闭,再次安装会提示 dpkg: 错误: 另外一个进程已经为 dpkg frontend 加锁
解决方案
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/updates/*
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo apt-get update
sudo apt-get upgrade
如果提示锁由某个进程持有,那么直接杀死该进程 sudo kill -9 <进程ID>
apt 命令
- 查看依赖
sudo apt-cache depends mongodb
- 递归查看所有依赖
sudo apt-chache rdepends mongodb
- 卸载
sudo apt-get purge <包名>
例如sudo apt-get purge mariadb*
历史记录
history 命令用来显示历史记录,默认会显示 1000条。可以修改/etc/profile
或./bashrc
,添加如下字段进行修改
HISTSIZE=1000
export HISTSIZE
history -c
清空命令历史记录history <N>
显示最近N条历史记录!<N>
执行第N条命令- ctrl+r 搜索历史记录
第三方插件
桌面便签 stickynotes
sudo add-apt-repository ppa:umang/indicator-stickynotes
sudo apt-get update
sudo apt-get install indicator-stickynotes