Linux开发人员常用命令
常用查询命令
# 查看ip地址
ip addr show
# 查看当前目录路径
pwd
# 当前目录下模糊查找文件
find / -name "*.pdf"
查看运行中进程
ps -ef | grep test
ps aux | grep test
# 查询包含java字符的记录,且过滤掉包含grep字符的记录,查询行数(wc -l)
ps -ef | grep java | grep -v grep | wc -l
# 过滤掉包含root字符的记录
grep -v root
# jps是jdk提供的查看java进程的小工具
jps
# 遍历正在运行的进程pid
pidof java
pgrep java
查看端口使用情况
# Windows
netstat -qo
# 查看端口占用情况
netstat -ano |findstr "端口号"
# Linux
ss -tnlp
ss -tnlp | grep 160 # 匹配包含160的信息
# 查看端口占用情况
ss -tnlp|grep 端口号 | sort -k 4
查看磁盘空间
# 检查系统中文件的使用情况
df -h -T
# 查看当前目录下各个文件及目录占用空间大小
du -sh *
# 查看指定文件大小
du -h test.txt
# 查看资源使用情况
top -c
# 查看内存占用情况
ps auxw --sort=-rss
# CPU 占用率 100% 排查五步法
1. top # 找到最耗CPU的进程 pid
2. top -Hp [pid] # 定位应用进程对应的线程 tid
3. printf"%xln"[tid] # 将 tid 转换为十六进制
4. jstack [pid] | grep -A 10 [tid 的十六进制] # 打印堆栈信息
5. 根据堆栈信息分析问题
查看主机名
hostname
hostnamectl
uname -a | awk '{print $2}'
查看历史命令
history 10 # 列出最近的10条命令
history -c # 清除历史命令
history|grep ls # 模糊搜索历史命令
测试IP端口是否连通
# 方式一:
telnet ip port
# 方式二:
curl ip:port
# 方式三:
wget ip:port
# 方式四:
ssh -v -p port username@ip
# 跳转进入指定服务器
ssh ip地址
# 复制文件到指定服务器目录
scp test.txt root@ip地址:/home/data
控制命令
Ctrl + L # 清屏(或clear)
Ctrl + C # 终止命令
Ctrl + S # 阻止屏幕输出
Ctrl + Q # 允许屏幕输出
Tab # 补全命令
基本操作
cd - # 返回上次的工作目录
cd ~ # 进入当前用户
cd / # 进入根目录
./ # 指在当前目录
../ # 指返回上一级目录
# 复制
cp # 只能移动文件
cp -r # 包括文件夹一块移动
# 重命名
mv ex3 new1 # 将文件ex3改名为new1
# 移动
mv /lianxi/kkk/* /lianxi/jjjj/ # 移动文件
mv * ../ # 移动当前目录所有文件到上级目录
# 以时间戳方式备份文件夹,先修改文件夹名称,再把文件夹移动到当前目录的bak目录中
mv file01 file01_bak_"$(date +%Y%m%d%H%M%S)" && mv file01_bak_* ./bak
# 删除
rm * # 删除当前目录下所有文件
rm -r # 可以删除文件夹
rm -rf # 强制删除
# 删除文件但排除个别文件
shopt -s extglob # 打开extglob模式
rm -fr !(file1) # 排除一个
rm -rf !(file1|file2|file3) # 排除多个
shopt -u extglob # 关闭extglob模式
# 批量移动
find test/ -name "*.jpg" -exec cp {} train \;
# 批量删除
find test/ -name "*.jpg" | xargs -i rm {}
# 新建文件夹
mkdir file_2022 #新建文件夹
rmdir file_2022 #删除文件夹
mkdir -p test1/test2/test3 #递归新建多层目录
# 新建文件
touch filename.txt
根据时间删除文件或者目录
命令 | 说明 |
---|---|
-mtime +3 | 按照天数 +3 指查找3天前的文件,-3指查询3天内的文件 |
-mmin +30 | 按照分钟 +30指查找三十分钟前的文件,同上 |
-name ".csv" | ".csv"表示查找扩展名为csv的所有文件,""表示查找所有文件 |
-exec | 固定写法 |
rm -rf | 强制递归删除,包括文件和目录 |
{} \; | 固定写法 |
find 对应的目录 -mtime +3 -name "文件名" -exec rm -rf {} \;
find 对应的目录 -mmin +30 -name "文件名" -exec rm -rf {} \;
find ./ -mtime +2 -exec rm -rf {} \;
find /data/www/ -mtime +2 -exec rm -rf {} \;
find /data/www/ -mtime +3 -name "*.csv" -exec rm -rf {} \;
------------------------------------------------------------------------
# 删除7天前修改的文件
find /path/to/directory -type f -mtime +7 -delete
# 删除30天前创建的文件
find /path/to/directory -type f -ctime +30 -delete
# 删除所有超过一年未被访问的文件
find /path/to/directory -type f -atime +365 -delete
显示目录
ls # 显示目录
ls -a # 显示隐藏
ls -l # 单列格式输出详细信息,简写:ll
tree # 树形结构显示目录,需要安装tree包
# 时间倒序
ll -t
# 时间正序
ll -t | tac
# 时间倒序 只展示前5个
ll -t | head -n 5
一次性执行多条命令
1、使用 “;” 符号运行多条指令
$ cmd1 ; cmd2 ; cmd3
# 就算有指令执行失败也会继续执行后面的指令。
2、使用 “&&” 符号运行多条指令
$ cmd1 && cmd2 && cmd3
# 前一条指令执行失败,则后面的指令都不会执行。
3、使用 “||” 符号运行多条指令
$ cmd1 || cmd2 || cmd3
# 前一条指令执行成功,则后面的指令都不会执行。
压缩/解压
tar在Linux上是常用的打包、压缩、加压缩工具。
[参数]:
-c : # create 建立压缩档案的参数;
-x : # 解压缩压缩档案的参数;
-z : # 是否需要用gzip压缩,--gzip, --gunzip, --ungzip 通过 gzip 过滤归档
-v : # 压缩的过程中显示档案;
-f : # 置顶文档名,在f后面立即接文件名,不能再加参数
-J : # --xz 通过 xz 过滤归档
-C : # --directory=DIR 改变至目录 DIR
# 1、gzip格式:
tar -zcvf test.tar.gz file1 file2 # 压缩(一般压缩包包名以 .tar.gz作为后缀名)
tar -zxvf test.tar.gz # 解压到当前目录
tar -zxvf test.tar.gz -C /home/file # 解压到指定目录
# 2、bz2格式:
tar jcvf test.tar.bz2 file1 file2 # 压缩(一般压缩包包名以 .tar.bz2作为后缀名)
tar -jxvf test.tar.bz2 # 解压到当前目录
tar -jxvf test.tar.bz2 -C /home/file # 解压到指定目录
开机自启动
/etc/rc.d/init.d/ # 存放着自启动脚本,优先级比下面的高
/lib/systemd/system/ # 存放着自启动脚本
/etc/rc.local # 直接加入即可
# 设置脚本的可执行权限
chmod +x /etc/init.d/xxxx.sh
JPS命令及参数介绍
jps [options ] [ hostid ] # 其中[options]和[hostid]都是可选参数
# 查询Linux系统当前所有java进程pid的命令,jps是jdk提供的一个查看当前java进程的小工具。
[options]选项:
-q # 仅输出VM标识符,不包括classname,jar name,arguments in main method
-m # 输出main method的参数
-l # 输出完全的包名,应用主类名,jar的完全路径名
-v # 输出jvm参数
-V # 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption # 传递参数到vm,例如:-J-Xms512m
[hostid]参数:[protocol:][[//]hostname][:port][/servername]
1)jps
2)jps –l # 输出主类或者jar的完全路径名
3)jps –v # 输出jvm启动参数
4)jps –q # 仅仅显示java进程号
5) jps -mlv 192.168.2.11
vi编辑文件内容
# 编辑模式:使用vi进入文本后,按i开始编辑文本
vi /etc/hosts
# 退出编辑:按ESC键
# 然后输入:
:q! # 不保存文件,强制退出vi命令
:w # 保存文件,不退出vi命令
:wq # 保存文件,退出vi命令
# vi编辑器只能运行于unix中,而vim不仅可以运行于unix,还可用于windows、mac等多操作平台。
# 因为Linux无法识别Windows的DOS格式,此时需要将文件格式转换成unix即可。
:set ff #(查看文件格式)
:set ff = unix # (修改格式)
# 编辑状态显示行数
:set number #(显示)
:set nonumber #(关闭)
# 删除单行
dd #(删除光标定位行)
# 删除多行
:10,20d #(删除行号10-20行)
查看文件内容
cat /etc/hosts # 查看文件内容的全部
tail/head # 查看指定的行
tail /etc/hosts # 显示文件最后10行
tail -n 2 /etc/hosts # 显示文件最后两行,同-2
head /etc/hosts # 显示文件前10行
head -2 /etc/hosts # 显示文件前2行,同-n 2
wc /etc/hsots # 统计文本中行数、字数、字符数
查看日志内容
tail -f temp.log # 不断刷新读取新内容
tail web.2016-06-06.log -n 300 -f # 查看底部即最新300条日志记录,并实时刷新
grep 'nick' -C 10 | tail run.log -n 1000 # 从最近1000行日志内查找,匹配字符‘nick’前后10条日志记录
grep 'nick' -C 10 run.log | head -n 1000 # 效果同上
cat -n test.log |grep "地形" |more # more 分页查询
grep常见用法
grep 'nick' -C 10 run.log # 查询字符‘nick’前后10条日志记录, 前10行(-A 10),后10行(-B 10)
grep -n "root" /etc/passwd # 过滤出来加行数
grep -c "root" /etc/passwd # 过滤出来的行号
grep -v "root" /etc/passwd # 取反
grep -q "root" /etc/passwd # 过滤出来的不显示
grep -w "root" /etc/passwd # 过滤出来有单词root的行
grep -o "root" /etc/passwd # 过滤出来root单词
grep -ro "root" 目录 # 过滤出来目录中文件里的有root的行
grep -i "root" /etc/passwd # 忽略大小写
grep -E "root" /etc/passwd # 启用扩展正则
grep -f file file1 # 过滤出file和file1中共同拥有的行
grep -f file file1 -v # 过滤出file有file1没有的行
grep -x "root" file # 过滤file中只含有root的的行
文件搜索
whereis # 搜索系统命令所在的位置,不能查询文件
whereis hadoop # 搜索程序名称
whereis -b hadoop # 搜索可执行的文件
whereis -m hadoop # 搜索说明文件
whereis -s hadoop # 搜索源代码
which # 能搜索命令所在位置,以及如果有些命令有别名,则会查出别名
which python
find . # 列出当前目录及子目录下所有文件和文件夹
find . -name test.txt # 按特定名称搜索文件
find / -name "*.pdf" # 在根目录下搜索后缀为.pdf的文件
find / -type f -name "*.pdf" # 指定(-type f)搜索会使所有内容更清晰
find . -type d -name "yang*" # 查找不同类型的文件
find . -type l -name "yang*" # 查找不同类型的文件
find . -name '.r.*' -exec rm {} # 匹配删除文件
sed进行数据操作
# 删除文件中第一行
sed -i '1d' file.txt
# 删除文件中最后一行
sed -i '$d' file.txt
# 删除文件中的指定一行
sed -i '3d' file.txt
# 删除第M到N行
sed -i 'M,Nd' file.txt
# 删除第M行到最后一行
sed -i 'M,$d' file.txt
# 删除文件中包含某个关键字开头的所有行
sed -i '/^keyword/d' file.txt
# 删除文件中包含某个关键字的所有行
sed -i '/keyword/d' file.txt
# 替换字符串
sed -i 's/abc/ABC/' file.txt # 替换file.txt每一行的第一个abc为ABC
sed -i 's/abc/ABC/g' file.txt # 使用后缀g,替换file.txt每一行的所有abc为ABC
# 追加字符串
sed -i 's/^/ABC/' file.txt # 在file.txt每一行的行首追加字符串ABC
sed -i 's/$/ABC/' file.txt # 在file.txt每一行的行尾追加字符串ABC
# 追加或插入一行
sed -i 'Na hello_world' file.txt # 在file.txt第N行后面追加一行"hello_world",a表示追加
sed -i 'Ni hello_world' file.txt # 在file.txt第N行前面插入一行"hello_world",i表示插入
sed -i '/hello/a hello_world' file.txt # 在file.txt包含"hello"的所有行后面追加一行"hello_world"
echo进行数据操作
# 在终端打印输出
echo "hello world"
# 向文件中写入内容
echo "hello world" > test.txt # 原先的内容会被覆盖掉
# 向文件中追加内容
echo "add content" >> test.txt
# 执行脚本同时追加多行文本命令
CMD echo "192.168.1.1 test1.com.cn" >> /etc/hosts;\
echo "192.168.1.2 test2.com.cn" >> /etc/hosts;\
echo "192.168.1.3 test3.com.cn" >> /etc/hosts;\
echo "192.168.1.4 test4.com.cn" >> /etc/hosts;\
java -jar -Dfile.encoding=utf-8 /java/test.jar --spring.profiles.active=test
echo输出时的转义字符
echo [-neE] [arg …]
-n: # 表示输出字符串不换行
-e: # 表示对于转义字符按对应的方式进行处理(若不加-e ,那么在输出时转义字符会按照普通字符进行处理,并不会达到自己想要达到的目的。)
-E: # 禁用转义解释
\b # 表示删除前一个字符
\e # 表示删除后一个字符
\n # 表示换行
\t # 表示水平制表符
\v # 表示垂直制表符
\c # \c后面的字符将不会输出,同时,输出完成后也不会换行
\r # 输出回车符(但是你会发现\r前面的字符没有了)
\a # 表示输出一个警告声音
chmod -R 777 授权命令
chmod :# 是改变权限的命令(change mode)
-R :# 当前目录及目录下所有文件
777 :# 可读、可写、可执行
# 整个命令的作用是:对当前目录及目录下所有的文件赋予可读可写可执行权限
# 命令格式:
chmod [-cfvR] [--help] [--version] mode file
# 命令参数:
-c #当发生改变时,报告处理信息
-f #错误信息不输出
-R #处理指定目录以及其子目录下的所有文件
-v #运行时显示详细处理信息
# 权限范围:
u #目录或者文件的当前的用户
g #目录或者文件的当前的群组
o #除了目录或者文件的当前用户或群组之外的用户或者群组
a #所有的用户及群组
# 为文件f01设置自己可以执行,组员可以写入的权限
chmod u+x,g+w f01
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod +x f01 # 对文件f01添加执行权限
chmod -x f01 # 对文件f01删除执行权限
chmod a+x f0l # 对文件f01的u,g,o 都添加可执行权限
# 权限代号:
r #读权限,用数字4表示(Read)
w #写权限,用数字2表示(Write)
x #执行权限,用数字1表示(eXecute)
- #删除权限,用数字0表示
s #特殊权限
# 权限分为三种:读(r=4),写(w=2),执行(x=1)
可读可执行5(rx=4+1)、可读可写6(rw=4+2)、可读可写可执行7(rwx=4+2+1)。
777就是:rwxrwxrwx
755就是:rwxrxrx
755
# 第一个数字表示文件所有者的权限
# 第二个数字表示与文件所有者同属一个用户组的其他用户的权限
# 第三个数字表示其它用户组的权限。
# chmod 755 设置用户的权限为:
1.文件所有者可读可写可执行 --7
2.与文件所有者同属一个用户组的其他用户可读可执行 --5
3.其它用户组可读可执行 --5
Linux开发人员常用命令的更多相关文章
- 【转发】linux开发人员常用命令
每个开发人员到了他们职业人生的某个阶段的时候,将会发现自己要寻找有关Linux的信息.我并不是这方面的专家.但是掌握了以下8个命令,我几乎可以得到我任何需要的东西. 注意:以下的命令都有很多扩展的文档 ...
- Linux学习之CentOS(二)--初识linux的一些常用命令
Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...
- Linux 使用 github 常用命令
Linux 使用 github 常用命令 今天整理一下常用的 github 命令,自己只是一个编程小白,有些地方可能做的不是很好,仅仅用作自己的学习使用. 创建一个文件夹用于存放github仓库 m ...
- Linux课程---2、Linux下最常用命令(查看帮助命令)
Linux课程---2.Linux下最常用命令(查看帮助命令) 一.总结 一句话总结: man 1.显示文件? ls:ls带其它参数详情可以man ls man ls:比如 ls -a显示隐藏文件,l ...
- Linux查看系统配置常用命令
Linux查看系统配置常用命令: 系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo ...
- linux vi编辑常用命令
linux vi编辑常用命令 来源:互联网 作者:佚名 时间:07-10 21:31:14 [大 中 小] linux vi编辑常用命令,需要的朋友可以参考下 vi编辑器中有三种状态模式 1. ...
- Linux 系统巡检常用命令
Linux系统巡检常用命令 # uname -a # 查看内核/操作系统# cat /etc/centos-release # 查看centos操作系统版本# cat /proc/cpuinfo ...
- linux 下 mysql 常用命令
linux 下 mysql 常用命令 阅读目录 ====================== 1.开启和关闭 1.1.开启 1.2.关闭 1.3.重启 2.登录 2.1.密码明文 2.2.密码密文 ...
- linux:终端常用命令 + vi命令修改文件及保存 方法
首先介绍一下Ubuntu下各个目录的一般作用: / 这就是根目录,一台电脑有且只有一个根目录,所有的文件都是从这里开始的.举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录 ...
- Apache RocketMQ在linux上的常用命令
Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录 1.启动Name Server 2.启动Broker 3.关闭Name Server 4 ...
随机推荐
- Scala中集合中的View用法
设想以下这个计算 def eval(i: Int): Option[Int] = { println(s"invoke with $i") if (i % 2 == 0) { No ...
- C#语言:散修笔记
文章目录 前言 数组的几种定义方法 out 和 ref 的区别 可变参数params 静态方法与非静态方法 >❀什么时候使用静态和非静态 构造函数 >❀类中方法的重载 >❀在类中输出 ...
- windows 10安装python2.7
一.官网下载 1.百度搜索"python"或者点击这个网址下载https://www.python.org/downloads/release/python-2716/ pytho ...
- [数字华容道] Html+css+js 实现小游戏
[数字华容道] Html+css+js 实现小游戏 效果图 代码预览 在线预览地址 代码示例 <!DOCTYPE html> <html> <head> <m ...
- 多线程池Flask实战应用
多线程池Flask实战应用 import json import time import flask from concurrent.futures import ThreadPoolExecutor ...
- 一文读懂Spring的SPI机制
一. 从类加载说起 Java中的类加载器负载加载来自文件系统.网络或者其他来源的类文件.jvm的类加载器默认使用的是双亲委派模式.三种默认的类加载器Bootstrap ClassLoader.Exte ...
- 记录一次由nginx配置引发出来的一系列的缓存问题
问题描述: 在做一个企业微信的移动端项目时,每次修改代码后并且打包.部署完毕,再次打开页面总是会有上一次的缓存,一开始以为是cookie和webStorage缓存导致的,然后每次清除还是有缓存,后来把 ...
- Leetcode数组-二分法
Leetcode数组-二分法 二分法学习地址 二分法 704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 targe ...
- 音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)
一.现象 ReplayKit2 适配中 UPLOAD进程被系统杀掉 日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal) 二.内存占用分析 1)系统 ...
- 8.10考试总结(NOIP模拟35)[玩游戏·排列·最短路·矩形]
所谓人,无论是谁到了最后,都会形单影只. T1 玩游戏 解题思路 可以把序列从 k 位置掰成两个序列. 问题就变成了两个序列从开头走向末尾是否可以保证前缀和之和一直不大于 0 . 并且可以移动到两个序 ...