工作中Linux常用命令---持续更新中

查看tcp/udp连接情况

    #查看所有tcp连接  -p显示pid
    netstat -antop

删除文件

rm -rf /test #递归删除test目录,(会把test目录删除)
rm -rf * #递归删除当前目录下所有类型文件(不会删除当前目录)

网络数据监听

    # 监听某个网卡下[某个端口]的数据发送和接受
    yum install -y tcpdump
    tcpdump -i eth0 [port 8080]
    
    yum install -y telnet
    telnet 10.162.*.* 8888 #尝试某个主机的端口是否可用
    telnet 10.162.78.10 #登录某个主机

wc命令

wc [-clw][--help][--version][文件./输入流]
参数:

-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。

 cat a.txt | wc -l 
 #统计a.txt中有几行数据
 

curl指令

## 发送带有授权信息的请求
function curls(){
    result=$(curl -s -X GET $1 --header "Authorization: Bearer ${TOKEN}" --insecure)
    echo $result
}
--insecure:表示允许没有证书连接到https站点上

java相关

 printenv  #打印所有环境参数
    
    jps  #查看所有java进程

    jinfo -flags pid  #查看某个java进程使用的jvm参数

shell执行

    # 执行多条字符串执行
 cmd="ls;pwd;cd /"
    eval $cmd

修改profile

    # 编辑profile文件
    vi /etc/profile 
    设置路径:export ROCKETMQ_HOME=/opt/rocketmq
    在PATH后面追加: :$ROCKETMQ_HOME/bin
    
    # 重新加载profile配置
    . /etc/profile

创建多个目录

    # 会创建/var/test/a  /var/test/b/c /ver/test/b/d 这三个目录
    # 属于花括号扩展
    mkdir -p /var/test/{a,b{c,d}}

下载软件

yum -y  install 软件名
apt-get -y install 软件名
apk add 文件名  #安装包
apk list | grep "文件名" #查找包

登录服务器

ssh root#@ip

免密登录服务器

ssh root@免密登录的服务器IP cat '>>' '~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

id_rsa.pub :本地的公钥,如果没有可通过  `ssh-keygen -t rsa -C "sxd4business@qq.com" 生成`

#快速生成密码并进行免密登录
ssh-keygen
ssh-copy-id username@hostname

压缩、解压文件

tar -czf a.tar.gz  需要压缩的文件路径
tar -xzf a.tar.gz 
注意:f要放入最后

归档、解档文件

tar -cf a.tar /root/test
tar -xf a.tar

查找文件

which [-a] 
    # 从Path中环境变量的目录下定位命令的所在路径
    # -a :把所有符合条件的路径都显示出来
    # 可查找当前所执行的命令到底是哪一个位置处的命令
    
    
whereis filename
    # 查找二进制文件、源文件和帮助手册文件路径的查找
    # 首先会去掉filename中的前缀空格和以.开头的任何字符,然后再在数据库查找

    
locate filename  --不建议使用
    # 从数据库中进行查找 *filename*文件的绝对路径。
    # 不能查找相对路径

find 查询路径 -name 文件名
    # 从查询目录递归的搜索文件,非常耗费硬件资源
    
四者区别:
    1.能用which、whereis和locate的时候尽量不要用find.
    2.which 用于查找命令和可执行文件

下载网络文件

wget -O 文件名 url连接

修改权限

chmod a+x 文件
chmod u+x 文件
chmod g+x 文件
chmod o+x 文件
x表示可执行  r表示可读  w表示可修改
a表示所有用户   u表示文件拥有者   g表示用户组 o表示其他用户

chmod -R 777 文件
-R :表示递归的给文件夹内文件赋权限
4 表示可读 r  2 表示可写 w  1 表示可执行 x

查看文件隐藏属性

lsattr 文件路径

修改文件隐藏属性(删除一些不可删除的文件)

## 删除属性
    chattr -R -i -e -a  files  去除 i e a 属性
    i   #不可编辑和删除
    a   #只能追加
    -R  #表示如果是文件,则递归的给文件以及子文件进行修改隐藏属性
## 增加属性
    chattr -R +i +e  +a  files 增加 i e a 属性
    
## 如果chattr命令文件被修改,则可通过下载C代码进行重新编译
    1、先下载C文件(https://github.com/posborne/linux-programming-interface-exercises/blob/master/15-file-attributes/chattr.c), 上传到服务器的任意目录
    2、编译,cc chattr,得到文件a.out,把名字改成chattr
    3、使用生成的文件去除 `/usr/bin/chattr` 的文件隐藏属性(i,e)
    4、把生成的文件进行替换 `/usr/bin/chattr` 

服务器之间传输文件

scp -rp 本地要传输的文件路径  root@ip:/路径
scp -rp 本地要传输的文件路径  主机名:/路径
scp -rp   root@ip:/传输的文件路径 存放在本地的路径
参数:
-r  #  递归的传输文件夹里面的东西
-p #  保留文件的修改、权限等信息

后台运行程序

nohub  command  $
例如:	
nohub java -jar a.jar $

# 把输出日志和错误输出到指定的文件中(默认是当前目录下nohup.log)
nohup command [> myout.file 2>&1] &



可以通过 jobs查看后台运行的程序

定时任务

crontab -e   #编写 定时任务
crontab -l   #查看当前用户定时任务
定时任务的表达式:https://tool.lu/crontab/

查看日志

tail -n 1000 files		#显示最后1000行
tail -n +1000 files		#显示第1000行以后的
head -n 1000 files		#显示前面1000行
head -n -1000 files     #显示倒数1000往前的 #显示除了文件最后1000行外的所有内容
tail -f files			#显示正在往文件里面追加的内容

文件流

echo 'll'  >> a.txt  		#追加内容  ll追到到a.txt的内容中

echo 'll' > a.txt 		 #覆盖原有内容 ll覆盖a.txt文件中的内容

#写入十六进制到文件中
echo -e -n "\x11\x22" > test  # 2 个字节
-e // 表示使能反斜杠转义,这样遇到\就会转义为二进制
-n // 不添加行尾换行标识,因为默认的 echo 会在末尾添加 0x0A
双引号表示要转义的字符串,\x表示十六进制,\0NNN 表示八进制

# 通过echo和nc往 unix socket中写入数据
echo "show stat" | nc -U ../var/my.sock



cat  >> f.txt < 文件、输入流  	# 把文件的内容或者输入流输入到f.txt文件 **注:前面必须有个能够接受文件或者输入流的执行才可以**

列分割(待补充)

ps -ef | grep 'redis' | awk '{print $2}'  # 只显示第二列

grep

排查错误经常需要利用grep打印匹配日志的上下几行,可以通过grep -A/B/C 实现:

-A 表示关键字之后,After
-B 表示关键字之前,Before
-C 表示关键字前后,Context

//打印匹配行的后10行

grep -A 5 "XXX" inputfile

cat  inputfile | grep -A 10 "XXX"  

 

//打印匹配行的前10行

grep -B 5 "XXX" inputfile

cat  inputfile | grep -B 10 "XXX"  

 

//打印匹配行的前后10行或省略C

grep -5 "XXX" inputfile

grep -C 5 "XXX" inputfile

cat  inputfile | grep -C 10 "XXX"  

cat

# 显示出行号 -n表示显示行号
cat -n test.log |grep "debug"  #得到关键日志的行号

工具

保存服务器的ssh连接会话

tmux new-session -s 会话名

tmux attach -t 会化名

tmux ls   #列出所有会话

crtl+b d  挂载会话	  # crtl+b 按完后暂停后再按 d

tmux kill-session -t 会话名

Ctrl+b %:划分左右两个窗格。

Ctrl+b ":划分上下两个窗格。

Ctrl+b ;:光标切换到上一个窗格。
Ctrl+b o:光标切换到下一个窗格。

关闭ssh密码登录

#在禁用密码登录前,要先配置好免密登录,不然退出后你就上不去了

#编辑远程服务器上的sshd_config文件:

vi /etc/ssh/sshd_config

PasswordAuthentication yes改为no

#编辑保存完成后,重启ssh服务使得新配置生效,然后就无法使用口令来登录ssh了

systemctl restart sshd.service

修改hosts文件

实现本地的域名与ip的映射
sudo vim /etc/hosts  #编辑并保存即可

tr命令

    #把标准输入经过替换、删除等操作后,标准输出
cat A.txt | tr ";" "A" #把A文件中;替换为A
cat A.txt | tr "\\\n" "A" #把A文件中\\n,替换为A

排序命令

    cat A.txt | sort #把A文件中每一行按照字母序进行排序输出

sed命令

    # 把所有xml后缀文件中,${user.name} 替换为/var/rocketmq;
    # g表示全文替换
    # “###”表示为了区分特殊字符/转义
    sed -i 's#${user.name}#/var/rocketmq#g' *.xml
    -ie 会对文件内容进行修改
    不加-ie只对输出内容进行修改
    
    #1.把每行第2个’test‘替换为’trial‘
    sed 's/pattern/replacetext/flags标记' 文件名
        n:表示替换第几个1-512之间任意一个
    例如:sed 's/test/trial/2' data4.txt
    
    #2.替换所有匹配的文本
    sed 's/test/trial/g' data4.txt
        如果没有g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;
    
    #3.只输出修改后的那一行 --- (-n选项和p标记使用)
    sed -n 's/test/trial/p' data5.txt
    
    #4.删除第三行数据
    #不会删除文件内容,只是删除输出内容
    sed -i '3d' data1.txt
    
    #5.删除 data6.txt 文件内容中的第 2、3行
    #不会删除文件内容,只是删除输出内容
    sed '2,3d' data6.txt
    
    #6.在第三行之前插入
    sed '3i\
    > This is an inserted line.' data6.txt
    
    #7.在第三行之后插入
    sed '3a\
    > This is an inserted line.' data6.txt
    
    #8.插入多行,只需在每行之后加入 '\'
    
    #9.替换指定行的内容--把第三行替换为其他字符串
    sed '3c\
    > This is a changed line of text.' data6.txt
    
    #10.处理单个字符,并且一对一映射---把1替换为7,2替换8,3替换为9
    sed 'y/123/789/' data8.txt
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值