Linx常用指令
Linux基础
1. Linux启动
内核引导。
运行 init。
系统初始化。
建立终端 。
用户登录系统。
2. 常用文件管理命令
ls: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件ls -a:查看所有文件包括隐藏文件(以.开头的文件就是隐藏文件)ls -l:查看当前路径下文件的读、写、执行权限ls | wc -l:查看ls下有多少个文件pwd: 显示当前路径cd XXX: 进入XXX目录下,cd ..返回上层目录.:当前目录;..:上级目录~:家目录,回到路径/home/acs下cd -:返回改变路径前的路径cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径mkdir XXX: 创建目录XXXmkdir -p:如果文件夹不存在,则创建rm XXX: 删除普通文件;rm XXX -r: 删除文件夹;rm *./txt:删除所有同类文件比如txt格式rm *:删除所有文件(不包括文件夹)rm * -r:删除所有文件夹rmkdir:删除一个空的目录mv XXX YYY: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令touch XXX: 创建一个文件cat XXX: 展示文件XXX中的内容tac最后一行开始显示 ;nl显示同时带行号复制文本:windows/Linux下:
Ctrl + insert,Mac下:command + c粘贴文本:windows/Linux下:
Shift + insert,Mac下:command + vclear清屏history:查看历史输入指令tree:以树形显示文件目录结构file xxx:查看文件属性where/which xxx:查看xxx在哪
3. 环境变量
环境变量类似于全局变量,可以被各个进程访问到。我们可以通过修改环境变量来方便地修改系统配置。
查看
列出当前环境下的所有环境变量:
| |
输出某个环境变量的值:
| |
修改
为了将对环境变量的修改应用到未来所有环境下,可以将修改命令放到~/.bashrc文件中。
修改完~/.bashrc文件后,记得执行source ~/.bashrc,来将修改应用到当前的bash环境下。
declare设置环境变量 declare [+/-][选项] [变量名=变量值]
unset <待清除环境变量>
常见环境变量
HOME:用户的家目录。PATH:可执行文件(命令)的存储路径。路径与路径之间用:分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。LD_LIBRARY_PATH:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。C_INCLUDE_PATH:C语言的头文件路径,内容是以冒号分隔的路径列表。CPLUS_INCLUDE_PATH:CPP的头文件路径,内容是以冒号分隔的路径列表。PYTHONPATH:Python导入包的路径,内容是以冒号分隔的路径列表。JAVA_HOME:jdk的安装目录。CLASSPATH:存放Java导入类的路径,内容是以冒号分隔的路径列表。
module工具箱
| 常用命令 | 说明 |
|---|---|
| module av | avail | 显示可使用模块 |
| module li | list | 显示已加载模块 |
| module load |add [modulefile] | 加载模块 |
| module unload |rm [modulefile] | 卸载模块 |
| module purge | 清理说有已加载模块 |
| module show|display [modulefile] | 查询配置信息 |
| module use [modulefile] | 使用其他module path |
| module switch|swap [modulefile1] [modulefile2] | 切换modulefile |
4. 常用命令
常用终端快捷键
ctrl c: 取消命令,并且换行ctrl d:关闭终端crtl l: 清空终端 (也可输入clear)ctrl u: 擦除从当前光标位置到行首的全部内容ctrl k: 擦除从当前光标位置到行尾的全部内容crtl w: 擦除光标位置前的单词crtl y: 粘贴使用前三种查出方式的文本。(误删的时候派上用场)crtl a: 移动光标到行首crtl e: 移动光标到行尾tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
4.1 系统状况
top:查看所有进程的信息(Linux的任务管理器)打开后,输入M:按使用内存排序
打开后,输入P:按使用CPU排序
打开后,输入q:退出
df -h:查看硬盘使用情况free -h:查看内存使用情况du -sh:查看当前目录占用的硬盘空间du -shc *:查看当前子目录占用的硬盘空间du -h --max-depth=1 ~/:home 目录下的所有文件和文件夹的大小,但只显示一层目录深度du -h -d 1 /var/lib/docker/overlay2 | grep -E "G\b":只显示大小中包含以G结尾的整个单词ps aux:查看所有进程ps aux | grep xxx:使用管道查看具体xxx进程ps -ef | grep xxx:更详细kill -9 pid:杀死编号为pid的进程传递某个具体的信号:
kill -s SIGTERM pidnetstat -nt:查看所有网络连接netstat -nlp | grep 22:查看22端口号是否被占用查看网络设置:
netsh wlan show profiles具体设置:
wlan show profiles wifi名称 key=clearw:列出当前登陆的用户ping www.baidu.com:检查是否连网
4.2 文件权限
chown:更改文件属性chown bin xxx:将xxx的拥有者改为bin账号chown root:root xxx:将xxx拥有者与群组改回rootchmod:修改文件权限drwxrwxrwx10位第一位d是不是文件夹,超链接
第一组rwx:自己——可读,可写,可执行 二进制(rwx 111对应7)
第二组rwx:同组——可读,可写,可执行
第三组rwx:其他——可读,可写,可执行
chmod +x xxx:给xxx添加可执行权限chmod -x xxx:去掉xxx的可执行权限chmod 777 xxx:将xxx的权限改成777chmod 777 xxx -R:递归修改整个文件夹的权限chgrp:更改文件属组file: 查看文件类型stat:查看文件属性
4.3 文件检索
find /path/to/directory/ -name '*.py':搜索某个文件路径下的所有*.py文件find . -path "./envs" -prune -o -name "libatomic.a" -print:同时排除特定的目录envsgrep xxx:从stdin中读入若干行数据,如果某行中包含xxx,则输出该行;否则忽略该行。find XXX/ -name '*.cpp' | xargs cat | grep xxx在XXX文件夹的cpp文件搜索xxxwc:统计行数、单词数、字节数既可以从stdin中直接读入内容;也可以在命令行参数中传入文件名列表;
wc -l:统计行数wc -w:统计单词数wc -c:统计字节数tree:展示当前目录的文件结构tree /path/to/directory/:展示某个目录的文件结构tree -a:展示隐藏文件ag xxx:搜索当前目录下的所有文件,检索xxx字符串cut:分割一行内容从stdin中读入多行数据
echo $PATH | cut -d ':' -f 3,5:输出PATH用:分割后第3、5列数据echo $PATH | cut -d ':' -f 3-5:输出PATH用:分割后第3-5列数据echo $PATH | cut -c 3,5:输出PATH的第3、5个字符echo $PATH | cut -c 3-5:输出PATH的第3-5个字符sort:将每行内容按字典序排序可以从stdin中读取多行数据
可以从命令行参数中读取文件名列表
xargs:将stdin中的数据用空格或回车分割成命令行参数find . -name '*.py' | xargs cat | wc -l:统计当前目录下所有python文件的总行数
4.4 查看文件内容
more:浏览文件内容回车:下一行
空格:下一页
b:上一页
q:退出
less:与more类似,功能更全回车:下一行
y:上一行
Page Down:下一页
Page Up:上一页
q:退出
head -3 xxx:展示xxx的前3行内容同时支持从stdin读入内容
tail -3 xxx:展示xxx末尾3行内容同时支持从stdin读入内容
tail -n 5 xxx:查看xxx尾部5行内容 (常用于日志)tail -f xxx:实时追踪该xxx文档的所有更新 (常用于 flume 采集数据)
4.5 用户相关
history:展示当前用户的历史操作。内容存放在~/.bash_history中- 终端中粘贴字符时头尾出现“0~“和“1~“的特殊字符 :
printf"\e[?2004l"
4.6 工具
md5sum:计算md5哈希值可以从stdin读入内容
也可以在命令行参数中传入文件名列表;
time command:统计command命令的执行时间ipython3:交互式python3环境。可以当做计算器,或者批量管理文件。! echo "Hello World":!表示执行shell脚本watch -n 0.1 command:每0.1秒执行一次command命令tar:压缩文件tar -zcvf xxx.tar.gz /path/to/file/*:压缩tar -zxvf xxx.tar.gz:解压缩tar -zxvf xxx.tar.gz -C yyy:解压到指定目录 yyy 中diff xxx yyy:查找文件xxx与yyy的不同点rpm2cpio demo.rpm | cpio -idmv:解压demo.rmp文件ln -s /usr/home/file /usr/home/abc:软连接: 在目录/usr/home下建立一个符号链接文件abc,使它指向目录/usr/home/filescp source@host:filename targt@host:filename:远程拷贝文件 [源文件] [目标文件]sz demo:下载文件strace ./demo:用于跟踪进程的系统调用以及接收和发送到内核的信号
4.7 安装软件
sudo command:以root身份执行command命令apt-get install xxx:安装软件pip install xxx --user --upgrade:安装python包yum常用命令- 列出所有可更新的软件清单命令:
yum check-update - 更新所有软件命令:
yum update - 仅安装指定的软件命令:
yum install <package_name> - 仅更新指定的软件命令:
yum update <package_name> - 列出所有可安裝的软件清单命令:
yum list - 删除软件包命令:
yum remove <package_name> - 查找软件包命令:
yum search <keyword>
- 列出所有可更新的软件清单命令:
5. 管道
管道类似于文件重定向,可以将前一个命令的stdout重定向到下一个命令的stdin。
管道命令仅处理stdout,会忽略stderr。
管道右边的命令必须能接受stdin。
多个管道命令可以串联。
与文件重定向的区别
文件重定向左边为命令,右边为文件。
管道左右两边均为命令,左边有stdout,右边有stdin。
|是管道链接符 用于两个管道之间的链接与通信
| |
6. 用户组的管理
添加新的用户账号 :useradd 选项 用户名
删除帐号:userdel 选项 用户名
修改帐号:usermod 选项 用户名
增加一个新的用户组:groupadd 选项 用户组
删除一个已有的用户组:groupdel 用户组
修改用户组的属性:groupmod 选项 用户组
7. 定时任务
atd一次性定时任务配置
at <options> <time>
1 2 3 4at now +2 minutes # 2分钟执行ls命令并把命令执行结果输出到/tmp/ls.txt文件 at> ls -al > ~/temp/ls.txt crtl + d atq # 查询
cron周期性定时任务配置
crontab <options> <file>
1 2 3crontab -e ***** /test.sh crontab -l
常用情况
- windows换行符
\r对应的显示^M;转换为unix格式的\n
方法1:
dos2unix filename方法2:
vi filename打开文件,执行:set ff=unix设置文件为unix,然后执行:wq,保存成unix格式。方法3:使用sed命令
sed -i "s/\r//" filename或sed -i "s/^M//" filename直接替换结尾符
常用C++指令
readelfreadelf -d ./demo:查看动态段信息,比如共享库依赖、动态符号、重定位信息、程序入口点等readelf -a ./demo:显示 ELF 文件的 所有 可用信息,依次输出所有的 ELF 文件头、节区头、符号表、动态段、重定位信息等内容。readelf –h ./demo:显示 ELF 文件的 文件头信息readelf --segments ./demo:显示 ELF 文件的 程序头信息readelf -s --wide ./demo:显示 ELF 文件的 符号表信息,--wide选项用于避免输出被截断readelf -S ./demo: 显示 ELF 文件的 节区头信息,查看demo是否是debug模式编译文件,看section里有没有.debug_info也可用--sectionsc++filt解析C++符号工具反汇编操作
1 2 3llvm-objdump -d # 反汇编命令,默认cpu, extractkernel -i # 反汇编命令,dcu llvm-amdgpu-objdump --inputs= # 反汇编命令,amdgpu
性能分析
1perf stat -e instructions,cycles ls