系统级别相关
#查看CentOS版本
cat /etc/centos-release 或 cat /etc/redhat-release
#重启
shutdown -r now
#查看hosts文件内容
cat /etc/hosts
#关闭防火墙
systemctl stop firewalld.service
#取消防火墙开机启动
systemctl disable firewalld.service
#开机启动 Docker
systemctl enable docker
#sh脚本开机启动
1.文件增加可执行权限(重要)
chmod 777 xx.sh
2.编辑文件,加入进去,如果这两个文件做了软连接,可直接编辑这个文件:vim /etc/rc.d/rc.local
vim /etc/rc.local 或者 vim /etc/rc.d/rc.local
3.使用crontab特殊的任务@reboot
crontab -e
@reboot /home/test.sh
4.拷贝sh脚本到系统目录
cp xx.sh /etc/profile.d/
5.通过chkconfig命令设置
cd /etc/rc.d/init.d
chkconfig --add test.sh
chkconfig test.sh on
#关闭开机启动
chkconfig test.sh off
#从chkconfig管理中删除test.sh
chkconfig --del test.sh
查看chkconfig管理
chkconfig --list test.sh
#查看jdk安装路径
java -verbose
命令相关
#vim命令模式:复制、粘贴、多选、删除、注释
yy:复制光标那一行
p:粘贴到光标下一行
v+上下键:多选,然后在输入y命令复制
dd:删除光标那一行
多行注释步骤:1.按ctrl+v进入可视块(-- VISUAL BLOCK --)模式。2.按上下键选择多行。3.按shift+i或者大写I进入编辑,输入想要插入的内容,如#。4.按两次esc会自动刷新页面,然后保存即可。
#grep排除
grep -v '名称'
#查看当前进程pid
#使用ps -ef查询
ps -ef | grep java | grep 项目名称 | grep -v grep | awk '{ print $2 }'
#查看占用CPU最高的前10个进程
ps aux|head -1;ps aux|sort -rn -k3|head -10
#查看占用内存最高的前10个进程
ps aux|head -1;ps aux|sort -rn -k4|head -10
#使用java提供的jps查询
jps -l | grep 项目名称 | awk '{ print $1 }'
#top命令查看当前进程,输入c可查看对应Java的具体信息
#jps参数解释,-l:显示java名称。-v:传递给JVM的参数。-m:传递给main方法的参数
jps -l -v -m
#查找命令
whereis nginx 或 find / -name 'nginx'
#tailf实时查看命令,默认需要安装。与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电。
#tailf效果与tail -F 效果一致,文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
创建tailf.c文件放置/usr/local/tmp路径下(需要创建文件夹),然后进入后执行gcc -o /usr/bin/tailf tailf.c
如果未安装gcc执行:yum -y install gcc-c++
tailf.c文件内容
/* tailf.c -- tail a log file and then follow it
* Created: Tue Jan 9 15:49:21 1996 by faith@acm.org
* Copyright 1996, 2003 Rickard E. Faith (faith@acm.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* less -F and tail -f cause a disk access every five seconds. This
* program avoids this problem by waiting for the file size to change.
* Hence, the file is not accessed, and the access time does not need to be
* flushed back to disk. This is sort of a "stealth" tail.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <malloc.h>
#include <sys/stat.h>
//#include "nls.h"
#define _(s) s
static size_t filesize(const char *filename)
{
struct stat sb;
if (!stat(filename, &sb)) return sb.st_size;
return 0;
}
static void tailf(const char *filename, int lines)
{
char **buffer;
int head = 0;
int tail = 0;
FILE *str;
int i;
if (!(str = fopen(filename, "r"))) {
fprintf(stderr, _("Cannot open \"%s\" for read\n"), filename);
perror("");
exit(1);
}
buffer = malloc(lines * sizeof(*buffer));
for (i = 0; i < lines; i++) buffer[i] = malloc(BUFSIZ + 1);
while (fgets(buffer[tail], BUFSIZ, str)) {
if (++tail >= lines) {
tail = 0;
head = 1;
}
}
if (head) {
for (i = tail; i < lines; i++) fputs(buffer[i], stdout);
for (i = 0; i < tail; i++) fputs(buffer[i], stdout);
} else {
for (i = head; i < tail; i++) fputs(buffer[i], stdout);
}
fflush(stdout);
for (i = 0; i < lines; i++) free(buffer[i]);
free(buffer);
}
int main(int argc, char **argv)
{
char buffer[BUFSIZ];
size_t osize, nsize;
FILE *str;
const char *filename;
int count;
//setlocale(LC_ALL, "");
//bindtextdomain(PACKAGE, LOCALEDIR);
//textdomain(PACKAGE);
if (argc != 2) {
fprintf(stderr, _("Usage: tailf logfile\n"));
exit(1);
}
filename = argv[1];
tailf(filename, 10);
for (osize = filesize(filename);;) {
nsize = filesize(filename);
if (nsize != osize) {
if (!(str = fopen(filename, "r"))) {
fprintf(stderr, _("Cannot open \"%s\" for read\n"), filename);
perror(argv[0]);
exit(1);
}
if (!fseek(str, osize, SEEK_SET))
while ((count = fread(buffer, 1, sizeof(buffer), str)) > 0)
fwrite(buffer, 1, count, stdout);
fflush(stdout);
fclose(str);
osize = nsize;
}
usleep(250000); /* 250mS */
}
return 0;
}
文件相关
#内外传输:拷贝a.zip文件到172.16.0.100服务器的root目录下。回车输入root密码
scp a.zip root@172.16.0.100:/root/
#拷贝文件夹时带上-r
scp -r status/ root@172.16.0.100:/root/
#从远程复制到本地(放入到home下)
scp root@172.16.0.100:/root/a.zip /home
#从远程复制到本地文件夹
scp -r root@172.16.0.100:/root/status/ /home
#scp 命令使用端口号 4588
scp -P 4588 root@172.16.0.100:/root/a.zip /home
#压缩 static文件夹 和 index.html文件 压缩成一个压缩包pc.zip。注:static文件夹不要斜杠/
zip -r pc.zip static index.html
#压缩static文件夹为tar.gz压缩文件
tar -zcvf new-name.tar.gz static/
#解压a.zip文件
unzip a.zip
#解压tar.gz文件
tar -xzvf aa.tar.ge
#文件迁移:移动 static文件夹 和 index.html文件 到backup文件夹下。注:static文件夹不要斜杠/
mv static index.html backup/
#查看大小:查看当前目录下所有文件。如需要查看当前文件夹可删除*号。
du -sh *
#排序
du -sh * |sort -hr
#查看目录大小(du)
du -h --max-depth=1 .
FTP相关
#win使用cmd命令链接服务器上传下载文件,-P指定远程端口
sftp root@192.168.2.244
sftp -P 200 root@192.168.2.244
#下载文件,默认下载路径C:\Users\用户名\,也可用lpwd命令查看本地路径,也可以在进入sftp前先切换本地目录在进行下载
get /home/xxx.txt
#下载文件夹
get -r static/
#上传文件
put aaa.txt
#上传文件夹
put -r static/
#查看本地路径(需要在每个命令前添加 l 即可)
lpwd
#以列表形式查看
ls -la
#创建文件夹
mkdir xxx
#退出
exit 或 quit
定时任务
crontab -l(查看)-e(编辑)-r(删除)
*/1 * * * * /bin/sh /root/deploy/tmp.sh --每分钟执行一次
* 1 * * * 每天的一点执行
15,40 2-5 * * * 每天的2点到5点的15分、40分执行
正则说明:分、时、日、月、周
* 取值范围内的所有数字
/ 每过多少个数字
- 从X到Z
,散列数字
systemctl系统服务
systemctl start msg
start 启动服务
status 查看当前服务状态
stop 关闭服务
restart 重启服务
enable 设置开机启动:systemctl enable msg
disable 设置开机不启动
reload 后面不接具体服务名,重新加载配置文件 或 systemctl daemon-reload
/etc/systemd/system/ 系统读取的启动脚本目录
systemctl list-units #列出当前系统所有服务的状态,如查看指定服务可增加grep搜索:systemctl list-units | grep i3plus
systemctl list-unit-files #列出所有服务的开机启动状态,如查看指定服务可增加grep搜索:systemctl list-unit-files | grep i3plus
journalctl -u i3plus-mes #查看systemctl启动日志
系统服务启动脚本msg.service内容(存放在/etc/systemd/system/)
[Unit]
Description=msg MSG 入口项目服务
After=network.target remote-fs.target nss-lookup.target
Requires=senseshield
[Service]
Type=forking
Environment=/etc/profile
ExecStart=/usr/bin/start_java.sh msg msg-2.0.0.jar 10g 10g
ExecStop=/usr/bin/stop_java.sh msg
RestartSec=5
Restart=always
#User=estsh
#Group=estsh
[Install]
WantedBy=multi-user.target
启动Java脚本内容(存放在/usr/bin/start_java.sh,要对文件授权(chmod))
#!/bin/bash
source /etc/profile#分配2G jvm内存
#_JAVA_OPTION="-Xmx2048m -Xms128m -Xmn1024m -Xss128m -XX:MaxDirectMemorySize=1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:MaxPermSize=64m"#分配4G jvm内存并增加宕机时生成dump文件用于分析
#_JAVA_OPTION="-Xmx4096m -Xms128m -Xmn1024m -Xss128m -XX:MaxDirectMemorySize=1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:MaxPermSize=64m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./"#20240408
_JAVA_OPTION="-Xmx$3 -Xms$4 -XX:+UseG1GC -XX:+PrintGC -XX:+PrintGCCause -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10m -Xloggc:./estsh-gc-%tlogs.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./estsh_pcn.hprof"
#传入指定配置文件参数及IP地址
_JAVA_APP_OPTION="--spring.profiles.active=docker,cus-docker --impp.server.ip=192.168.1.240"#_JAVA_CONFIG="-Dpath_cfg=/data/conf -Denv_cfg=prod -Dlog.path=/data"
APP_HOME_PATH=$I3PLUS_HOME'/app/'$1
APP_NAME=$2echo "========================= Java Application Start ========================= "
echo "====== I3_PLUS_HOME : "$_I3PLUS_PLUS_HOME
echo "====== JAVA_OPTION : "$_JAVA_OPTION
echo "====== JAVA_APP_OPTION: "$_JAVA_APP_OPTION
echo "====== APP_HOME_PATH : "$APP_HOME_PATH
echo "====== APP_NAME : "$APP_NAME
echo "========================= Java Application End ========================= "cd ${APP_HOME_PATH}/jar
nohup java -jar ${_JAVA_OPTION} ${APP_NAME} ${_JAVA_APP_OPTION} >/dev/null 2>&1 &
echo $! > thread.pid
停止Java脚本内容(存放在/usr/bin/stop_java.sh,要对文件授权(chmod))
#! /bin/bash
source /etc/profile#_I3PLUS_PLUS_HOME='/home/esi/works/产品发布/APP-TEMPLATE/i3Plus'
APP_HOME_PATH=$I3PLUS_HOME'/app/'$1PID=$(cat ${APP_HOME_PATH}/jar/thread.pid)
kill $PID
rm ${APP_HOME_PATH}/jar/thread.pid