On this page
Linux
Windows安装Ubuntu子系统
安装包安装
参考链接
远程SSH免密访问方法
- 本机通过ssh-keygen生成密钥
ssh-keygen -t rsa默认会在C:\Users\用户名/.ssh/下生成id_rsa,id_rsa.pub两个文件
- 将id_rsa.pub 复制到目标机器上
ssh id_rsa.pub root@192.168.1.3:~/.ssh- 在目标机器上将刚赋值的公钥放到authorized_keys文件中
cat id_rsa.pub >> authorized_keys无法使用kill杀死的进程
产生原因
无法杀死线程,可能是由于kill的是子线程
解决办法
使用 ps aux 查看进程状态,找到STAT一栏,如果为Z那么就是僵尸进程
通过 ps -ef | grep 僵尸进程ID 找到父进程ID,先kill掉父进程
CPU占用过高排查
使用 top -c 命令查询CPU占用过高进程
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 3153388 29572 15996 S 399.2 1.5 7:40.41 java -jar application.jar 27 root 20 0 2392 756 688 S 0.0 0.0 0:00.01 /bin/sh 35 root 20 0 9748 3428 2992 R 0.0 0.2 0:00.00 top -c根据第一步查询到的CPU占用过高的进程ID, 使用 top -Hp 1 查询进程下各个线程CPU占用情况
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 23 root 20 0 3153388 29572 15996 R 81.7 1.5 2:50.39 Thread-1 25 root 20 0 3153388 29572 15996 R 80.7 1.5 2:55.73 Thread-3 24 root 20 0 3153388 29572 15996 R 80.1 1.5 2:55.78 Thread-2 22 root 20 0 3153388 29572 15996 R 79.7 1.5 2:47.36 Thread-0 26 root 20 0 3153388 29572 15996 R 76.7 1.5 2:50.62 Thread-4 1 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.03 java 8 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.11 java 9 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 java 10 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 java 11 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 java 12 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 java 13 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 VM Thread 14 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 Reference Handl 15 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 Finalizer 16 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 Signal Dispatch 17 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 C2 CompilerThre 18 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 C2 CompilerThre 19 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.02 C1 CompilerThre 20 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.00 Service Thread 21 root 20 0 3153388 29572 15996 S 0.0 1.5 0:00.14 VM Periodic Tas根据进程ID和进程下CPU占用最高线程ID的十六进制数,使用 jstack 1 | grep ‘0x17’ -C5 –color 查询具体的堆栈信息
# jstack 1 | grep '0x17' -C5 --color java.lang.Thread.State: RUNNABLE at com.fool.service.InfiniteCycle.lambda$execute$0(InfiniteCycle.java:14) at com.fool.service.InfiniteCycle$$Lambda$1/455659002.run(Unknown Source) at java.lang.Thread.run(Thread.java:748) "Thread-1" #10 prio=5 os_prio=0 tid=0x00007f88ec289800 nid=0x17 runnable [0x00007f88ce84c000] java.lang.Thread.State: RUNNABLE at com.fool.service.InfiniteCycle.lambda$execute$0(InfiniteCycle.java:14) at com.fool.service.InfiniteCycle$$Lambda$1/455659002.run(Unknown Source) at java.lang.Thread.run(Thread.java:748)
通过以上信息可以精确到具体哪个方法
设置开机启动
使用systemctl
在/etc/systemd/system文件夹下创建 <服务名>.service文件
vi <服务名>.service编辑<服务名>.service文件
[Unit]
Description=<服务名>
After=network.target
[Service]
# 工作目录
WorkingDirectory=/usr/local/ynpacs-main
# 用户名
User=root
# 用户组
Group=root
# 类型
Type=fork
#ExecStart=/usr/bin/java -jar -Dspring.profiles.active=pro /usr/local/ynpacs-main/ynpacs-main.jar
# 启动命令
ExecStart=/usr/local/ynpacs-main/startup.sh
SuccessExitStatus=143
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target执行开机启动命令
systemctl enable <服务名>命令
服务
查看服务列表
systemctl list-unit-files查看服务日志
journalctl -f -u <service>其他
重启防火墙
后台运行jar
nohup java -jar xxx.jar >output.log &给sh文件执行权限
chmod 777 startup.sh查看磁盘使用情况
df -h查看内存使用情况
cat /proc/meminfo查询端口占用命令
netstat -tunlp|grep 8080查看所有进程
ps aux查看磁盘空间
df -h查看文件信息
stat <文件名称>在文件末尾添加字符串
echo "hello">>test.txt查找文件
find / -name <文件名称>查看当前文件夹路径
pwd查看shell解释器类型
ls -l /bin/sh修改解释器类型
dpkg-reconfigure dash删除文件/文件夹
rm -rf <文件夹名称>
rm -f <文件名称>解压压缩文件
tar -zxvf 压缩文件名.tar.gz移动文件到
mv [source] [target]复制文件到
cp [source] [target]vi编辑
查询文本
/查询内容
保存并退出
:wq
不保存退出
:q
强制不保存退出
:q!