linux操作
# linux操作
Owner: -QVQ-
# 基本
目录 | ls 目录 【参数】 | 参数: -F来区分目录文件(文件不带/)、 ls -R 递归展示子目录的文件 //这个最好单独写,r必须大写 -a显示隐藏文件(.开头) -l以列表显示 -h以M显示文件大小 -i显示文件文件id | ll可以代替ls -l la可以代替ls -a | |
---|---|---|---|---|
创建目录 | Mkdir 【-p】目录名1(路径+目录名) 目录名2…… | -p可以同时创建多层的目录,否则会报错 | ||
切换目录 | Cd destination | /开头的代表绝对路径 Cd - 返回上次路径 | 直接cd返回根目录 | |
显示当前路径 | Pwd | |||
查看路径的真实大小 | Du 【-sh】目录路径 | -s 显示汇总的大小//没有这个将会递归显示各个大小 -h 表示以较高可读性的形式显示 | ||
查找文件 | Find [查找位置] 查找标准 [处理动作] | 查找标准: -name "文件名称": 根据文件名查找 -iname "文件名称":根据文件名查找,不区分字符大小写; -wholename "文件名称":后面的均为文件名称,适用于文件名带/ -user USERNAME: 根据用户查找; -group GRPNAME: 根据属组查找; -nouser:查找没属主的文件; -nogroup: 查找没有属组的文件; -type f: 普通文件 d: 目录 b: 块设备 c: 字符设备 l: 符号链接 p: 命名管道 s: 套接字文件 -size -size [+|-]2 查找大于/小于2M 不写+-则搜索1到2个数据块大小的 -mmin [-/+]5 查看5分钟内内容修改/没修改的文件 -inum 文件id 按文件id精确搜索 | 一个个遍历,较慢 文件名有空格可以用’ ‘括起来 查找标准可以链式增加 | |
Locate 【option】【pattern】 | Sudo updatedb 强制更新库 | |||
查看树状图 | tree | tree -I "node_modules|cache|test_*" 排除指定文件夹 -L指定最大展示深度 | tree -I "node_modules|cache|test_*” | |
文件 | 查看整个文件 /合并多个文件 | Cat 【参数】destination cat【参数】destination1 destination2…… > 新destination | 参数: -n 显示行号 -b 有文本的显示行号 | |
分页查看内容 | More【参数】文件名/地址 | |||
查看部分文件 | tail 【参数】destination | -n 行数,显示最后n行 -F 用vim或其他对文件内容增删才实时返回 -f 用通道>>写进去的日志才能实时更新 | ||
Head 【参数】 destination | -n 行数,显示头n行 //没有-F 的命令 | |||
以较少的内容进行输出 | Less destination | 向上键 向上翻动一页 向下键/enter 向下翻动一页 空格键 滚动一页 B 向上滚动一页 Q 退出 H 帮助 -N 显示行号(必须大写) 数字 向下移动几位 | ||
查看文件类型 | File destination | |||
创建文件 | Touch 文件名、文件名…… | 当前目录下不能文件名相同,否则创建失败 | ||
复制文件 | Cp 【参数】文件名 目录(可以加上新文件名) | -i 询问是否覆盖 -r 复制路径 | 目录不存在则创建 | |
重命名文件/移动文件 | Mv 旧文件名/目录 新文件名/路径 | 如果路径存在则移动,否则为重命名 | ||
删除文件 | Rm【参数】 destination1 desrination2 | -i 询问是否删除 -r 递归删除, -f 强制删除。 | Rm my* 表示删除所有名字my开头的文件 | |
查找内容 | grep[options] [查找内容] [file] | -n 显示行号 -c 显示匹配的行数 //两者只能输入一个 -v反向搜索 -i忽略大小写 | 查找内容前加^ 表示以查找内容开头的所有行 $表示以查找内容结尾的所有行 | |
输出重定向 | 命令1(有输出结果的)> destination 命令1(有输出结果)>> destination | 覆盖输出,将命令1的输出结果写入文件内 追加输出 | ||
统计文件内容信息 | wc -lwc 需要统计的文件路径 | -l 表示行数 -w 表示单词数(依空格来判断单词数) -c 表示字节数 | ||
管道 | 过滤 | ls/|grep y | 以|管道符为界,读出ls / 的内容 共grep y 读取 即查找根目录下取名包含y 的文件或目录 | |
扩展处理 | ls /|wc -l | 统计根目录下所有文件个数 | ||
连接 | 创建硬连接 | Ln 目录+文件名 硬链接名 | ||
创建软连接 | Ln -s 目录+文件名 硬链接名 | |||
统计文件内行数 | wc 【参数】【】 | 统计文件内行数 |
要在 Linux 中以后台线程的方式运行一个命令,可以使用以下方法:
在命令末尾添加
&
符号:在命令末尾添加&
符号可以将命令放入后台执行,如下所示:command &
1使用
nohup
命令:nohup
命令会将指定的命令忽略挂断信号,可以在后台持续运行,即使登出也不会停止。示例:nohup command &
1使用
screen
或tmux
:screen
或tmux
是终端多路复用工具,可以创建会话并在后台保持运行。首先要安装并启动screen
或tmux
,然后在会话中执行需要后台运行的命令。
无论使用哪种方式,将命令放入后台执行后,可以使用 ps
命令查看后台进程,并且可以使用 jobs
命令查看当前 shell 中的后台任务。
# os
硬件 | 查看磁盘剩余空间 | df 【-m/g】[-h] | 【用M显示】[以可读性较高的方式显示] |
---|---|---|---|
查看可用的内存 | Free 【-m/g】[-h] | Swap值:临时内存,系统真实内存不够时用磁盘空间来充当内存 | |
时间 | 输出时间 | Date 2018年 03月 24日 星期六 15:51:48 Date +%F 2018-03-24 Date +%T 21:01:21 等价于Date +%Y-%m-%d (小写的y表示只输出年的后两位) //如果要输入空格用引号括起来或者用\加空格 | %H 时 %M 分 %S 秒 Date -d "-1 day” "+%Y-%m-%d %H %M%S" 表示前一天的数据 Date -d "+1 year” "+%Y-%m-%d %H %M%S" 表示一年后 |
操作日历 | Cal 输出当前月份 Cal -3 输出上个月+本月+下个月的日历 Cal -y 2018 输出某一年的日历 | ||
睡眠 | sleep 秒【参数】 | 参数:(均可用小数表示百分比) s 秒 m 分钟 h 小时 d 天 | |
默认文件 | 系统二进制文件 | /sbin | |
用户安装的应用 | /usr/bin | ||
超管安装的应用 | /usr/sbin | ||
配置文件 | /etc | ||
外接设备,需要挂载才能用 | /dev | ||
除了root以外的其他用户的家目录 | /home | ||
进程 | /proc | ||
管理员的家目表 | /root | ||
s运行产生的临时文件 | /tmp o | ||
os系统日志文件 | /var | ||
系统 | 关机 | shutdown(慎用,关了电源不好开机) Shutdown -h now 立即关机 Shutdown -h 时间 【要关机时显示的内容】 按时关机 Shutdown -c 关机取消 | (立即关机) |
关闭内存 | halt | ||
备份: | 快照(还原点):包含所有内容(侧重短期备份,频繁备份可以用)库-右键虚拟机-快照 | ||
克隆: | 复制,(侧重长期备份) 关机 库-右键虚拟机-管理-克隆 | ||
查看命令历史记录 | history | ||
读取主机名 | Hostname 【-f】 | -f输出当前主机名的FQDN(全限定域名) | |
重新启动计算机 | Reboot Reboot -w 只写关机开机的日志信息 | ||
输出持续在线时间 | uptime | Users 表示连接数 Load average 负载 | |
获取os的信息 | Uname//获取操作系统类型 Uname -a 表示获取全部os信息 uname -r 获得版本号 hostnamectl 等价于uname -a可读性强 | cat /etc/issue 也能获得系统版本信息 | |
查看网络状态 | Netstat 【-tnlp】 | -t列出tcp协议的连接 -n表示将地址从字母组合转为ip地址 -l 表示过滤状体列中值为listen(监听)的连接数 -p显示发起连接的进程pid和名称 | |
手册 | Man 命令名 | 查询指令的用法 | |
ulimit | -a 查看 系统状态 -n 修改支持的并发进程数 | ||
操作网卡 | ifconflg | ||
进程 | 显示当前登录的用户名 | whoami | |
查看进程信息 | ps -e/-A 表示列出全部的进程 -f 显示全部的列 Ps -ef|grep 进程名称 | Uid 用户名 Ppid 为该进程的父级进程 僵尸进程:没父级进程的 c:cpu占用率 stime:该进程的启用时间 tty:终端设备,发起该设备的识别符合,?表示系统发起的 time:进程执行时间 cmd: 进程的路径或名称 | |
查看服务器进程占用的资源 | Top 动态显示//按q退出 快捷键:M按内存大小排序 P 按cpu使用率排序 1 显示多个cpu的使用 | pr表示优先级 virt:虚拟内存(申请大小) res:常驻内存(实际用的) shr:共享内存 常驻内存减去共享内存才是常用的内存 %mem 表示内存占用百分比 Command 进程名称或路径 | |
控制软件服务 | Service 服务名 start/stop/restart 启动/停止/重启 本机安装的apache | ||
结束进程 | Kill 进程pid Killall 进程名 | ||
异常退出 | 突然关闭或断电下次进入这个文件会出现异常页面 | 解决:将交换文件删除(临时文件) Rm -f .passed.swp | |
别名机制 | 创建自定义命令 | 1.打开映射文件~/.bashrc 2.在alias那行写入alias 新命令=‘旧命令’ 3.重新登录当前用户 | |
语法 | 获得命令路径 | whereis 命令 | |
共享文件夹路径 | mnt/hgfs | ||
一个终端窗口开启多个窗口 | 创建一个名字为XX的screen | screen -S XX | |
退出窗口 | ctrl+a;按d | ||
查看所有screen | screen -ls | ||
进入终端窗口 | screen -r XX | ||
删除窗口 | screen -S XX -X quit | ||
lsof | 输出当前所有活跃进程 | ||
lsof | more | 分页显示命令结果 | ||
列出指定用户打开的文件 | -u | 列出指定用户打开的文件,选项后面可以接多个用户名(空格隔开) 用户名前加^表示列出除这个用户外其他用户打开的文件 | |
# lsof命令
lsof | more
分页显示命令结果
FD | 说明 |
---|---|
cwd | 当前目录 |
txt | txt文件 |
rtd | root目录 |
mem | 内存映射文件 |
TYPE | 说明 |
---|---|
DIR | 目录 |
REG | 普通文件 |
CHR | 字符 |
a_inode | Inode文件 |
FIFO | 管道或者socket文件 |
netlink | 网络 |
unknown | 未知 |
列 DEVICE
表示设备ID
列 SIZE/OFF
表示进程大小
列 NODE
表示文件的Inode号
列NAME
表示路径或者链接
lsof +d ./data/
列出目录中打开的文件
+D
选项会列出一个目录和其子目录中打开的文件,而 +d
选项只会列出当前目录下已打开的文件
列出打开但被删除的文件
lsof -u tt | grep deleted
列出所有打开的网络文件
lsof -i 4/6
列出打开的ipv4/ipv6网络文件
lsod -i:端口号
获得所有在指定端口号上打开的文件
lsof -i TCP/UDP
列出使用了TCP 或 UDP 协议的文件
列出TCP协议且端口范围为 1 到 1024 的文件:lsof -i TCP:1-1024
列出指定进程ID打开的文件
lsof -p 1,2,^4
列出进程1、2,忽略进程4打开的文件
# 编译
gcc | gcc 原始文件 -o 目标exe | ||
---|---|---|---|
gcc -c .c文件 | 编译 | ||
gcc -o 可执行文件名 编译生成的.o | 链接 | ./可执行文件名 才能运行这个文件 | |
gcc -I(大写i) 路径 | 指定头文件路径 | ||
gcc 原始文件 -pg -o 目标exe | 可以生成调试程序 | ||
gprof 程序 gmon.out -p>123123.0 | 先运行一遍可调式程序,将可调式程序里的gmon.out以不递归函数(-p)的形式显示,存入文件123123.0中 | profile 已经记录了每个函数被调用的确切次数,但是为这些函数记录的时间(实际上是所有函数)都是 0.00。这是因为 sleep 函数实际上 是执行了一次对内核空间的调用,从而将应用程序的执行挂起了,然后有效地暂停执行,并等待内核再次将其唤醒。由于花在用户空间执行的时间与花在内核中睡眠的时间相比非 常小,因此就被取整成零了。其原因是 gprof 以固定的周期对程序运行时间进行采样测量,当程序挂起时,gprof就不会对程序进行采样测量。 | |
-l 链接 | |||
-L指定链接地址 | -L. 在当前位置下找链接目标 -L/usr/lib | ||
-fPIC | 作用于编译阶段,告诉编译器产生与位置无关代码。那么在产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。 | 如果使用,在生成.o和.so和.a时都要用,不然报错 | |
-lpthread | 包含线程的代码需要加上这个 | ||
-std=c++11 | |||
-lboost_thread | 编译boost库的线程 | ||
make | make [OPTION]... [TARGET]… | ||
-c 路径 | 切换路径 | ||
-p | 查看所有的预定义的变量的当前值 | ||
strings | 打印出文件里可以打印的内容 常用于确定哪里.a里包含哪些.c文件 | strings -f * | grep "my dear" | |
ldd
查看可执行文件的链接库
lsof -p pid | grep .so
查看运行时进程的动态链接
ldconfig:当安装新的共享库时,使用它更新共享库的缓存信息。
# 解压
.zip格式解压
unzip a.zip | # 解压到当前目录 |
---|---|
unzip a.zip -d /test | # 解压到test目录 |
unzip -v a.zip | # 查看压缩包内容 |
.tar.gz格式
tar -zxvf 压缩文件名.tar.gz | #解压到当前目录 |
tar -zcvf 压缩文件名.tar.gz 被压缩文件名 | #压缩命令 |
压缩
yum -y install zip | # 安装zip |
---|---|
zip -r a.zip /test | # 将test目录下的递归压缩到a.zip |
zip -r b.zip *.conf | # 将该目录下的.conf文件压缩 |
-q | 不显示指令执行过程 |
---|---|
-r | 递归处理,将指定目录下的所有文件和子目录一并处理 |
-z | 替压缩文件加上注释 |
-v | 显示指令执行过程或显示版本信息 |
-d | 更新压缩包内文件 |
-n | <字尾字符串> 不压缩具有特定字尾字符串的文件 |
# 文件
查看 | 查看整个文件 /合并多个文件 | Cat 【参数】destination cat【参数】destination1 destination2…… > 新destination | 参数: -n 显示行号 -b 有文本的显示行号 | |
---|---|---|---|---|
分页查看内容 | More【参数】文件名/地址 | |||
查看部分文件 | tail 【参数】destination | -n 行数,显示最后n行 -F 用vim或其他对文件内容增删才实时返回 -f 用通道>>写进去的日志才能实时更新 | ||
Head 【参数】 destination | -n 行数,显示头n行 //没有-F 的命令 | |||
以较少的内容进行输出 | Less destination | 向上键 向上翻动一页 向下键/enter 向下翻动一页 空格键 滚动一页 B 向上滚动一页 Q 退出 H 帮助 -N 显示行号(必须大写) 数字 向下移动几位 | ||
信息 | 查看文件类型 | File destination | ||
统计文件内容信息 | wc -lwc 需要统计的文件路径 | -l 表示行数 -w 表示单词数(依空格来判断单词数) -c 表示字节数 | ||
更全的显示文件信息 | stat | -f 显示文件系统的信息 -t 简洁的显示 | 显示的是文件节点的信息 | |
权限 | 修改权限 | chmod [可选参数] mode file... | mode: [ugoa...][[+-=][rwxX]...][,...] u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 r 表示可读取4,w 表示可写入2,x 表示可执行1,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执s 表示特色权限 【可选参数】 -c : 若该文件权限确实已经更改,才显示其更改动作 -f : 若该文件权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) --version : | 例子 chmod a+r file 对file文件给所有用户加读取权限 chmod a=rwx file 等同于 chmod 777 file r=4,w=2,x=1 |
操作 | 创建文件 | Touch 文件名、文件名…… | 当前目录下不能文件名相同,否则创建失败 | |
复制文件 | Cp 【参数】文件名 目录(可以加上新文件名) | -i 询问是否覆盖 -r 复制路径 | 目录不存在则创建 | |
重命名文件/移动文件 | Mv 旧文件名/目录 新文件名/路径 | 如果路径存在则移动,否则为重命名 | ||
删除文件 | Rm【参数】 destination1 desrination2 | -i 询问是否删除 -r 递归删除, -f 强制删除。 | Rm my* 表示删除所有名字my开头的文件 | |
查找 | 查找内容 | grep[options] [查找内容] [file] | -n 显示行号 -c 显示匹配的行数 //两者只能输入一个 -v反向搜索 -i忽略大小写 | 查找内容前加^ 表示以查找内容开头的所有行 $表示以查找内容结尾的所有行 |
输出重定向 | 命令1(有输出结果的)> destination 命令1(有输出结果)>> destination | 覆盖输出,将命令1的输出结果写入文件内 追加输出 |
复制粘贴 | Ctrl+shift+c Ctrl+shift+v | ||
---|---|---|---|
删除光标前的所有内容 | Ctrl+u | ||
删除光标后的所有内容 | Ctrl+k | ||
清屏 | clear/ctrl + l | ||
中断进程 | Ctrl+c |
# vim
进入vim | 打开指定文件 | vim 文件路径 | |
---|---|---|---|
打开文件光标移动到指定行 | Vim +数字 文件路径 | ||
打开文件,高亮显示关键词 | Vim +/关键词 文件路径 | ?没试出来 | |
命令模式 | 行首 | Shift+6 | |
行尾 | Shift+4 | ||
首行 | gg | ||
末行 | g/shift+g | ||
光标移动 | j k h l 下 上 左 右 | ||
光标下移n行 | 数字n+enter | ||
删除当前行 | dd | ||
复制当前行和往下n-1行 | 数字 n + yy | ||
可视化复制/删除 | Ctrl v 选择区块 | ||
y 复制 d删除 | |||
粘贴 | p | ||
撤销 | U | ||
取消撤销 | Ctrl r | ||
向下查找 | / 查找字符串 | 此时n M 分别向后向前查找 | |
向上查找 | ?查找字符串 | 此时n M 分别向前向后查询 | |
编辑模式 | 光标前插入 | i | |
光标后插入 | a | ||
末行模式 | 进入 | : | |
搜索 | /内容 | ||
N/n 切换上/下一个结果 | |||
替换 | :s/关键字/新内容【/g】 | 替换所在行第一个符合条件的 | |
/g替换所在行所有符合的 | |||
:%s/关键字/新内容【/g】 | 替换所有行第一个符合条件的 | ||
/g替换所有行所有符合的 | |||
显示行号 | |||
取消显示 | :set nu | ||
:set nonu | |||
指定字符替换 | :%s/替换前/替换后/g | % 表示整个文件范围,s 表示替换命令,g 表示全局替换。 | |
退出vim | 未修改退出 | :q | |
取消修改退出 | :q! | ||
将文件保存另一个文件,不退出 | :w 文件名 | ||
保存并退出 | :wq | ||
自动选择合适的退出方式 | :x | ||
控制着色 | 显示着色 | Syntax on | |
关闭着色 | Syntax off | ||
计算器 | 在编辑模式下 | ||
Ctrl+r 再按= | |||
配置vim | 个人配置文件 | Vim ~/.vimrc | |
全局配置文件 | Vim /etc/vimrc | 写入 set nu 永远自动显示行号 | |
文件加密 | :X(大写) |
# vimium
浏览 | |||
---|---|---|---|
点击元素 | 转到 | f | |
新标签后台打开 | F | ||
页面滚动 | 上 | u/k | |
下 | d/j | ||
左 | h | ||
右 | l | ||
顶部 | gg | ||
底部 | G | ||
页面内元素的下一个页面 | ]] | ||
页面内元素的上一个页面 | [ | ||
记录标记 | m | ||
跳转标记 | ` | ||
复制 | 当前网址 | yy | |
点击链接 | yf | ||
图片 | yi | ||
文字 | yv | ||
焦点 | 文本框 | gi | |
页面内部 | gf | ||
页面最外部 | gF | ||
文本选择(自由) | v | ||
文本选择(行对齐) | V | ||
跳转 | 当前标签打开(搜索)复制的内容 | p | |
网站的上一级 | gu | ||
网站的首页 | gU | ||
刷新 | r | ||
前进 | L | ||
后退 | H | ||
标签 | 前一个 | J | |
后一个 | K | ||
前第1个 | 1g0 | ||
后第1个 | 1g$ | ||
左移标签 | << | ||
右移标签 | >> | ||
新标签 | 重新开个当前的标签页 | yt | |
新标签打开(搜索)复制的内容 | P | ||
关闭 | x | ||
重新打开关闭的 | X | ||
vim自己 | 帮助 | ? | |
暂停快捷键 | i | ||
多功能搜索 | o |
# chrome
Chrome 键盘快捷键 - 计算机 - Google Chrome帮助 (opens new window)
界面元素 | ||||
---|---|---|---|---|
标签栏 | F10 | |||
特定的选项卡 | ctrl+数字 | |||
地址栏 | ctrl+l | |||
搜索引擎搜索 | ctrl+k | |||
打开 | ||||
选项卡 | ctrl+t | |||
窗口 | ctrl+n | |||
重新打开关闭的 | ctrl+shift+t | |||
历史记录 | ctrl+h | |||
下载 | ctrl+j | |||
地址 | ||||
当前标签www. * .com 格式访问 | ctrl+enter | |||
刷新 | ctrl+r | |||