Linux常用命令

1.添加文件到jar包

jar -uvf platform-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.yml

注意:会把appliction.yml文件压缩到jar包中对应文件夹的相对路径中去

2.删除文件

#强制删除文件夹下所有文件
rm -rf /usr/local/test 
#强制删除文件
rm -f /usr/local/test/test.sh

 3.查看端口占用

netstat -ntlp   //查看当前所有tcp端口
netstat -ntulp |grep 80   //查看所有80端口使用情况
netstat -an | grep 3306   //查看所有3306端口使用情况

 4.复制

cp -a [源文件] [目标文件夹] //例如:cp -a /usr/local/redis /usr 就把redis文件夹及里面所有文件复制到了usr文件夹下

5.用户组 用户

//添加组
groupadd xxx
//删除组
groupdel xxx

//添加用户
// -d:指定目录  -g:指定组 -m 自动建立用户加目录
useradd -d /usr/local -g xxx -m username
//给用户设置密码
passwd username

//查看用户名信息
id username

6.授权

//更改目录所有者
chown -R [用户名] [目录名]
//更改目录权限 
chmod -R 755 [目录名]

//执行权限问题
r-4 //读取权限
w-2 //写入权限
x-1 //执行权限
0 //无权限

例如:
第一位7:所属用户权限,可读可写可执行 = 4 + 2 +1
第二位6:用户组权限,可读可写可 = 4 + 2
第三位5:其他用户权限,可读可执行 = 4 + 1
777 //最大权限
775 //所属用户最大权限,用户组最大权限,其他用户可读执行权限

 7查看进程

找出进程ID
1.ps -ef | grep mrf-center | grep -v grep

找出进程下耗时最长的线程
2.top -Hp pid

找出线程的十六进制值
3.printf "%x
" 21742

找出堆栈信息的线程数据
4.jstack 21711 | grep 54ee

8.查看内存 磁盘

#查看文件夹大小
du -h –max-depth=1 /usr/local
#查看系统磁盘信息
df -h
#查看系统实时状态
top
#查看剩余内存
free

9.linux之间复制文件

#!/usr/bin/expect

#指定最后编译好的jar存放的位置
set remote_password "123456"
set remote_ip "192.168.10.1"
set jar_path "/usr/local"
#Jenkins中编译好的jar名称
set jar_name "app.jar"
set sh "restart-app.sh"

spawn scp $jar_path/$jar_name root@$remote_ip:$jar_path
# yum install -y expect
# yum install -y tcl tclx tcl-devel
expect {
    "(yes/no)?" {
        send "yes
";
        exp_continue;
    }
    "*assword:" {
        send "$remote_password
"
    }
}
expect "100%"
expect eof

# 远程执行ssh命令
#做法1
#spawn ssh root@$remote_ip "sh $jar_path/$sh"
#expect "*password:"
#send "$remote_password
"
#interact
#做法2
spawn ssh root@$remote_ip         
expect {
    "(yes/no)?" {
        send "yes
";
        exp_continue;
    }
    "*assword:" {
        send "$remote_password
";
    }
}
expect {
    "root@" {
        send "cd $jar_path&&sh reMgt.sh
"
    }
}
expect {
    "run new one" {
        send "exit
"
    }
}
expect eof
spawn               交互程序开始后面跟命令或者指定程序
expect              获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send       用于发送指定的字符串信息
exp_continue        在expect中多次匹配就需要用到
send_user           用来打印输出 相当于shell中的echo
exit                退出expect脚本
eof                 expect执行结束 退出
set                 定义变量
puts                输出变量
set timeout         设置超时时间
interact        允许用户交互
转载自:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/11208887.html
#远程执行shell脚本 注意,一定要有tag
#!/bin/bash
ssh user@$ip> /dev/null 2>&1 << tag
touch /usr/local/test.txt
exit
tag
echo finished

/usr/bin/expect <<-EOF
#中间写expect脚本
EOF

10.启动项目 不输出打印信息

#启动项目 不输出打印控制台信息
nohup ./startup.sh >/dev/null 2>&1 &

 11.查看pid并杀掉进程

#!/bin/bash
prevPid="`ps -ef | grep "java -jar xxx.jar" | grep -v grep |awk '{print $2}' `"
[ $prevPid ]&&echo ${prevPid}&&kill ${prevPid}
echo 'kill prev java process'
echo 'run new one ...'
java -jar xxx.jar  >> xxx.log 2>&1 &

linux中双引号("")、单引号('')、反单引号(``)区别

双引号只是解决变量空格问题,不会将命令转为字符,而单引号中的内容则全部是字符串。返单引号的作用是将命令的返回值引用起来。

 12.shell脚本交互

#1.简单使用echo
echo ${your pwd} | nohup ./startup.sh >/dev/null 2>&1 &
#2.使用Spawn
spawn需要先安装tcl等组件,在shell中,先expect,再send

& 表示任务在后台执行
&&表示前一条命令执行成功时,才执行后一条命令
| 表示管道,上一条命令的输出,作为下一条命令参数
|| 表示上一条命令执行失败后,才执行下一条命令
; 各命令的执行给果,不会影响其它命令的执行

 13.关闭防火墙

sudo systemctl stop firewalld #临时关闭
sudo systemctl disable firewalld #然后reboot 永久关闭
sudo systemctl status  firewalld #查看防火墙状态。
原文地址:https://www.cnblogs.com/lcmlyj/p/11282121.html