Linux常用命令
1.添加文件到jar包
jar -uvf platform-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.yml #压缩
jar -xvf 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端口使用情况
netstat -tuln // 查看所有端口占用情况
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\n" 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\r"; exp_continue; } "*assword:" { send "$remote_password\r" } } expect "100%" expect eof # 远程执行ssh命令 #做法1 #spawn ssh root@$remote_ip "sh $jar_path/$sh" #expect "*password:" #send "$remote_password\r" #interact #做法2 spawn ssh root@$remote_ip expect { "(yes/no)?" { send "yes\r"; exp_continue; } "*assword:" { send "$remote_password\r"; } } expect { "root@" { send "cd $jar_path&&sh reMgt.sh\r" } } expect { "run new one" { send "exit\r" } } 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 &
nohup yourcommand >myout.log 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 #查看防火墙状态。 #1、查看防火墙状态 systemctl status firewalld #2、如果不是显示active状态,需要打开防火墙 systemctl start firewalld #3、查看所有已开放的临时端口(默认为空) firewall-cmd --list-ports #4、 查看所有永久开放的端口(默认为空) firewall-cmd --list-ports --permanent #5、 添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口) firewall-cmd --add-port=223/tcp #6、 添加永久开放的端口(例如:223端口) firewall-cmd --add-port=223/tcp --permanent #7、关闭临时端口 firewall-cmd --remove-port=80/tcp #8、 关闭永久端口 firewll-cmd --remove-port=80/tcp --permanent #9、 配置结束后需要输入重载命令并重启防火墙以生效配置 firewall-cmd --reload systemctl restart firewalld
14.查找文件
find / -name 文件名
find / -name "*要模糊查找的文件*"
15.查找日志关键字
grep "error" access.log tail -n 1000 日志文件 | grep "关键字" # 查看最新1000行的关键字‘’ awk '/error/' error.log