Featured image of post Linux命令

Linux命令

记录常用的Linux命令

启动jar包

java启动jar包:

1
2
3
4
5
6
7
nohup java \
  -Xms1024M -Xmx1024M \
  -XX:+HeapDumpOnOutOfMemoryError \
  -XX:HeapDumpPath=/www/wwwroot/cslc.yimengtut.online/logs/ \
  -jar /www/wwwroot/cslc.yimengtut.online/backend/ruoyi-admin.jar \
  >> /www/wwwroot/cslc.yimengtut.online/logs/output.log \
  2>> /www/wwwroot/cslc.yimengtut.online/logs/error.log &

上面命令的效果:

  1. 启动Java程序:以 ruoyi-admin.jar 为主程序启动Java应用。
  2. 内存设置:初始堆和最大堆大小均设置为 1024MB。
  3. 错误处理:遇到内存溢出时,生成堆转储文件(Heap Dump),文件放在 /www/wwwroot/cslc.yimengtut.online/logs文件夹下。生成堆转储文件的好处是:方便开发者诊断内存溢出的具体原因,帮助定位内存泄漏或对象占用问题,从而更有效地进行性能优化和故障排查。
  4. 日志管理:
    • 标准输出追加到 output.log
    • 错误输出追加到 error.log
  5. 后台运行:通过 nohup 和 & 实现程序在后台持续运行,这样我们就算关闭终端也不会影响进程。

下面这个命令可以看我们后台启动的java日志:

1
tail -f /www/wwwroot/cslc.yimengtut.online/logs/output.log  

我们再点击ctrl+C可以退出查看,并且java程序还是会运行的。

解释:

nohup命令的作用:

  • nohup 是 Linux/Unix 系统中的一个命令,用于运行程序时忽略挂断信号(HUP信号),使得程序在用户退出终端后仍能继续运行。
  • 如果不用nohup的话,当用户退出终端时,系统会向该终端启动的所有进程发送 SIGHUP 信号(挂断信号),从而导致进程被终止。
  • 使用 nohup可以屏蔽 SIGHUP 信号,让命令在后台持续运行,即使终端关闭。

&命令作用:

  • &:将命令放入后台运行(立即返回终端,不阻塞当前会话)。
  • 不加 &:命令会在前台运行,占用当前终端。

为什么nohup和&经常一起使用:

  • 在命令末尾加上 &(如 command &)会将进程放到后台执行,允许用户继续输入其他命令。但问题是:如果终端被关闭(比如 SSH 断开),后台进程仍然会收到 SIGHUP 信号(默认会终止进程)。
  • nohup(即 “no hang up”)会让进程忽略 SIGHUP 信号,即使用户退出终端或关闭会话,进程也不会被终止。但问题是如果单独使用 nohup(如 nohup command),进程会占用当前终端(前台运行),用户无法继续操作

修改权限

更改目录及其所有子文件和子目录的权限。使用 -R 选项递归地更改目录及其内容的所有权限。777表示全部权限。

1
chmod -R 777 /home/ruoyi

查看目录的权限

1
ls -l /home/ruoyi

看到的结果比如: drwxrwxrwx 。- 表示文件,d 表示目录,l 表示符号链接等。 rwxrwxrwx表示全部权限。第一个rwx表示 文件所有者的权限,第二个rwx表示 文件所属组的权限,第三个rwx表示其他用户的权限。

进入某个目录

cd 文件夹名:进入当前命令行所在位置下的某个文件夹。

cd /www/wwwroot:表示进入根目录下的www/wwwroot文件夹。

查看java相关的进程

1
jps

jps是JDK(Java Development Kit)自带的一个命令行工具,用于列出当前系统中所有正在运行的 Java 进程及其相关信息。

1
jps -l

jps -l能看到比jps更详细的信息。

你使用jps看java相关的进程的时候,也会看到一个jps进程,这个jps进程就是我们输入的命令调用的工具的进程,这个工具是java写的,所以也能被看到。

显示Java的 PID、完整类名及 JVM 参数

1
jps -lv

强制杀死进程

1
kill -9 进程号

kill -9会强制进程立即停止,进程无法捕获或忽略该信号。

优雅杀死进程

1
kill -15 进程号

kill -15可以优雅终止进程,-15 选项发送 SIGTERM 信号(默认信号),通知进程终止。

对比kill -9:

kill -15与 kill -9不同。kill -9发送的是 SIGKILL 信号,这个信号会让操作系统内核直接终止进程,不可被捕获、阻塞或忽略。而kill -15发送的是 SIGTERM 信号,SIGTERM 允许进程捕获信号并执行清理操作。进程收到 SIGTERM 后,可以保存数据、关闭文件或释放资源、执行其他清理操作。如果进程正确处理了 SIGTERM,它会正常退出。若进程未处理 SIGTERM 或清理时间过长,进程可能不会退出。所以建议等10秒后,如果kill -15没有执行完毕,我们使用kill -9来强制执行。

输出内容到终端

echo “Hello, World!": 将指定的文本输出到终端

移动

1
mv aaa.txt scripts/

把当前所在位置 aaa.txt文件移动到 当前所在目录下的 scripts 目录中。

复制

1
cp aa.txt scripts/

将当前命令行所在位置的 aa.txt 文件复制到当前所在目录下的 scripts 目录中。

当前文件夹下查找文件

1
find /www/wwwroot -iname ruoyi-admin.jar

在 /www/wwwroot目录下面找 ruoyi-admin.jar 。

find的常用参数:

  • -name: 按文件名查找(支持通配符,如 *.txt)。

  • -iname: 不区分大小写查找文件名。

  • -type: 查找特定类型的文件(f 表示文件,d 表示目录)。

  • -size: 按文件大小查找。

  • -mtime: 按时间查找,例如 -mtime -7 查找最近7天修改过的文件。

  • -exec: 执行命令。

    1
    2
    3
    4
    
    例如,find /path/to/files -type f -name "*.bak" -exec rm {} \;
    表示查找 /path/to/files 目录及其子目录中所有以 “.bak” 结尾的文件,并使用 rm 命令删除它们。
    例如:find /www/wwwroot -type f -name "*cc.txt" -exec ls -l {} \;
    表示在 /www/wwwroot 目录及其子目录中查找所有以 cc.txt 结尾的文件,并使用 ls -l 命令打印它们的详细信息。
    

通过进程号查看进程情况

1
ps -p 1234 -f

pid是1234的进程情况以及启动命令等信息。

  • -p 1234:仅显示 PID 为 1234 的进程(其他进程会被过滤掉)。

  • -f:以完整格式(full-format)输出,包含更多列信息(如启动命令、参数、时间等)。

创建文件夹

1
mkdir -p aaa

在当前目录下创建aaa文件夹。如果存在aaa目录就不做任何事情。

1
mkdir -p a/b c d

创建多个文件夹,这里创建了a和a下的b文件夹、c文件夹、d文件夹。

查看当前命令行所在位置

1
pwd

特定目录

1
2
3
4
1. /:就是根目录。
2. ..:就是上级目录。
3. ../..:就是上上级目录。比如,cd ../..就是前往当前所在位置的上上级目录。
4. ~:当前用户的家目录

显示文件或者文件夹信息

1
ls

查看当前命令行所在文件夹下的文件和文件夹名称。不全面,只有文件和文件夹名称,没有其他信息。

1
ls 指定文件夹

查看指定文件夹下的文件和文件夹名称。不全面,只有文件和文件夹名称,没有其他信息。

1
ls -l 文件

可以看到这个文件的类型、权限等信息。比较全面。

1
ls -l 文件夹

可以看到这个文件夹里面的内容中有哪些东西,并且目录下的这些东西是文件还是文件夹,他们的权限是什么样的。如果没有文件,会显示总计0。比较全面。

ls -l 文件的输出示例

1
2
3
root@iv-ydtpt5dam8qbxys2mky2:~# ls -l install_panel.sh 
-rw-r--r-- 1 root root 58075 Apr 21 21:44 install_panel.sh
root@iv-ydtpt5dam8qbxys2mky2:~# 
字段示例值说明
文件类型与权限-rw-r--r---:普通文件 rw-:所有者(root)可读可写 r--:组和其他用户仅可读
硬链接数1该文件有 1 个硬链接(通常是文件本身)
所有者root文件属于 root 用户
所属组root文件属于 root
文件大小58075文件大小为 58,075 字节(约 56.7 KB)
最后修改时间Apr 21 21:44文件最后一次修改时间为 4 月 21 日 21:44
文件名install_panel.sh文件名,推测为安装面板的脚本

展示的信息我们主要看第一列。

  1. 第一列的第一个字符表示文件类型:
    1. d:目录
    2. -:普通文件
    3. l:符号链接
    4. s:套接字
    5. p:管道文件
  2. 第一列的第一个字符之后的九个字符表示文件权限(以三组字符表示):
    1. 第一组(字符 2-4):所有者权限(如 rwx,表示可读、可写和可执行)
    2. 第二组(字符 5-7):用户组权限
    3. 第三组(字符 8-10):其他用户权限
  3. 注意:权限的-表示没有某个权限。比如-rw-rw-r–表示 这是一个普通文件,所有者和用户组具有读写权限,而其他用户仅具有读权限。全部用户都没有执行权限。

ls -l 文件夹的输出示例

1
2
3
4
5
6
root@iv-ydtpt5dam8qbxys2mky2:~# ls -l mrdoc-install/
total 16
-rwxr-xr-x  1 root root 2038 May  9 23:46 docker-install.sh
-rw-r--r--  1 root root 1090 May  9 23:46 LICENSE
drwxr-xr-x 16 root root 4096 May 25 00:48 MrDoc
-rw-r--r--  1 root root  347 May  9 23:46 README.md

目录总览:

字段说明
目录名mrdoc-install/查看的是名为 mrdoc-install 的目录内容
总占用空间total 16目录内所有条目占用的磁盘块数(单位:KB)

目录内容详情:

权限硬链接数所有者所属组大小修改时间名称类型/说明
-rwxr-xr-x1rootroot2038May 9 23:46docker-install.sh可执行脚本 - 所有者可读、写、执行 - 其他用户可读、执行
-rw-r--r--1rootroot1090May 9 23:46LICENSE普通文件 - 所有者可读、写 - 其他用户仅可读
drwxr-xr-x16rootroot4096May 25 00:48MrDoc子目录 - 硬链接数16表示含大量子项 - 所有人可进入和操作该目录
-rw-r--r--1rootroot347May 9 23:46README.md普通文件 - 说明文档(Markdown格式)

重命名(同移动命令,即mv既能移动也能重命名)

mv oldfile.txt newfile.txt:重命名文件

mv olddir newdir:重命名文件夹

mv /path/to/oldfile.txt /newpath/to/newfile.txt:移动并重命名文件(文件夹也行的)

创建文件

touch bbb.txt:创建bbb.txt。你不用输入内容。相当于创建了一个内容是空的文件。

cat > ccc.txt :创建文件并要求需要输入内容。输入内容后,按 Ctrl + d 保存并退出。

查看文件内容

cat ccc.txt:直接查看文件内容。打印到终端。

删除文件或者文件夹(可递归)

  1. rm file1.txt file2.txt file3.txt:删除 file1 、 file2、 file3这多个文件。
  2. rm -rf aaa:递归强制删除aaa这个文件夹。不提示是否确认删除。rm -rf a b c会递归删除a、b、c文件夹。
  3. rm -ri aaa: 每次操作都给你提示,你输入y同意,输入n拒绝 。-r表示递归。-i表示提示。

重启服务器

reboot:重启服务器

重启服务

CentOS 6的命令:

1
service <服务名> restart

现代 Linux 发行版(如 Ubuntu 16.04+/CentOS 7+)的命令:

1
sudo systemctl restart <服务名>

例子:

sudo systemctl restart mysqld:重启mysql服务。

查看当前系统信息

1
cat /etc/os-release

例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
root@iv-ydtpt5dam8qbxys2mky2:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
root@iv-ydtpt5dam8qbxys2mky2:~# 

设置某个服务开机自启(或禁用)

systemd 系统(Ubuntu 16.04+/CentOS 7+/Debian 8+ 等):

  1. 启用开机自启

    1
    
    sudo systemctl enable <服务名>
    

    示例:设置 Nginx 开机自启

    1
    
    sudo systemctl enable nginx
    
  2. 验证是否生效

    1
    2
    
    sudo systemctl is-enabled <服务名>
    # 返回 "enabled" 表示成功
    
  3. 禁用开机自启

    1
    
    sudo systemctl disable <服务名>
    

SysVinit 系统(CentOS 6/Ubuntu 14.04 等旧版本):

  1. 使用 chkconfig 启用

    1
    
    sudo chkconfig <服务名> on
    

    示例:设置 Apache 开机自启

    1
    
    sudo chkconfig httpd on
    
  2. 验证是否生效

    1
    2
    
    sudo chkconfig --list <服务名>
    # 显示 "on" 表示成功
    
  3. 禁用开机自启

    1
    
    sudo chkconfig <服务名> off
    

查看服务状态

1
systemctl status mysql

例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
root@iv-ydtpt5dam8qbxys2mky2:~# systemctl status mysql
● mysqld.service - LSB: start and stop MySQL
     Loaded: loaded (/etc/init.d/mysqld; generated)
     Active: active (running) since Fri 2025-06-13 00:55:24 CST; 8min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 2716 ExecStart=/etc/init.d/mysqld start (code=exited, status=0/SUCCESS)
      Tasks: 28 (limit: 9453)
     Memory: 300.1M (peak: 302.1M)
        CPU: 918ms
     CGroup: /system.slice/mysqld.service
             ├─2729 /bin/sh /www/server/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/www/server/data --pid-file=/www/server/data/iv-ydtpt5dam8qbxys2mky2.pid
             └─3308 /www/server/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/www/server/mysql --datadir=/www/server/data --plugin-dir=/www/server/mysql/lib/plugin --user=mysql --log-error=iv-ydtpt5dam8qbxys2mky2.err >

Jun 13 00:55:23 iv-ydtpt5dam8qbxys2mky2 systemd[1]: Starting mysqld.service - LSB: start and stop MySQL...
Jun 13 00:55:24 iv-ydtpt5dam8qbxys2mky2 mysqld[2716]: Starting MySQL. *
Jun 13 00:55:24 iv-ydtpt5dam8qbxys2mky2 systemd[1]: Started mysqld.service - LSB: start and stop MySQL.

登录MySQL

1
2
mysql -u root -p
输入密码

登录mysql

ZIP压缩与解压

压缩

1
zip archive.zip file.txt

file.txt 压缩成 archive.zip

1
zip -r archive.zip myfolder/

myfolder/ 整个目录(含子目录和文件)压缩成 archive.zip。-r表示递归压缩的意思。

解压

1
unzip archive.zip

将 archive.zip 中的所有文件和目录解压到你当前所在的目录。

假设 archive.zip 里内容结构如下:

1
2
3
file1.txt
folder1/
  └── file2.txt

你当前路径是 /home/user/,那么执行:

1
unzip archive.zip

之后你会在 /home/user/ 下看到:

1
2
3
file1.txt
folder1/
  └── file2.txt

解压到指定文件夹

1
unzip archive.zip -d /path/to/target-folder/
  • 如果 /path/to/target-folder/ 存在,则文件会解压到该目录中。

  • 如果目标文件夹不存在,unzip 会自动创建它,无需手动提前创建。

查看端口占用

1
lsof -i :8380

查看 8380 端口的占用情况。

例子:

1
2
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    2094694 yckj  239u  IPv6 10499122      0t0  TCP \*:8380 (LISTEN)
  1. COMMAND:java:。运行该进程的命令。这表明该进程是一个 Java 应用程序。
  2. PID:2094694:。进程 ID。这是该 Java 进程在系统中的唯一标识符。可以用此 ID 来终止或检查此进程的状态。
  3. USER:yckj: 运行该进程的用户。表示这个 Java 进程是由用户 yckj 启动的。
  4. FD:239u。文件描述符,239 是该文件的标识符,而 u 表示这个文件描述符是可读写的(即 “u” 代表 “user”)。这说明此进程打开了一个与网络相关的套接字,并且可以在其上进行读写操作。
  5. TYPE: IPv 6。文件类型,指示这个网络连接使用的是 IPv 6 协议。这意味着该进程正在通过 IPv 6 地址进行通信。
  6. DEVICE:10499122。这个值通常是指设备的标识符,具体意义通常与操作系统内部表示有关,普通用户不需要关注这个值。
  7. SIZE/OFF:0t0。该列通常表示文件的大小或偏移量。在网络连接的情况下,通常可以忽略,因为它与传统文件操作不太相关。
  8. NODE:TCP。这表示连接类型是 TCP(传输控制协议)。TCP 是一种连接导向的协议,适用于需要可靠传输的应用。
  9. NAME: \*:8380 (LISTEN)* 表示该进程正在监听所有网络接口。这意味着任何网络接口都可以连接到这个进程。8380,指定监听的端口号是 8380。(LISTEN): 表示该进程处于“监听”状态,准备接受进入的连接。

综上所述,这条输出的含义是:

  • 有一个 Java 应用程序正在运行,其进程 ID 为 2094694,用户是 yckj。
  • 该进程在所有 IPv 6 地址上监听端口 8380,处于等待接入连接的状态。这意味着应用程序可能是一个 web 服务或其他需要网络连接的服务

跟踪文件内容

  1. head -n 20 filename.txt:查看 filename.txt文件的最前20行内容。
  2. head filename.txt:表示查看最前10行内容(默认是10行)。
  3. tail -n 20 filename.txt : 查看 filename.txt文件的最后20行内容。
  4. tail filename.txt:表示查看最后10行内容(默认是10行)。
  5. tail -f filename.txt:持续显示新的内容。如果有新的内容,也会打印出来。你执行的时候,会显示文件最后 10 行内容,随后如果这个文件内容有追加,那么控制台会持续输出新写入的内容。控制台日志输出的长度会一直增加的。

后台启动 java,双重输出日志

1
nohup java -jar ruoyi-admin.jar 2>&1 | tee nohup.out &

效果:

  1. nohup + & 保证:程序在后台运行,终端关闭后进程不会终止。
  2. 2>&1 + tee 实现:控制台实时输出到终端,这样你在启动时能在当前终端看到实时日志,并且你点击 ctrl+c 不会终止 java 进程,他还是在后台运行的。这个日志同时还会保存到 nohup.out 文件中。相当于是两个日志输出,一个是输出到终端,一个是输出到 nohup. out 文件中。
组件作用
nohup忽略 SIGHUP 信号,防止终端退出时进程被杀死
2>&1将标准错误(stderr)合并到标准输出(stdout)
tee nohup.out分流输出:既显示到终端,又写入文件
&后台运行

注意:这个命令在生产环境中临时使用进行调试是可以的,但是不建议长期使用,生产环境建议使用Logback/Log4j2这种更专业的日志框架。临时调试使用Logback/Log4j2也行,但是如果你想要和idea中一样的效果,你习惯看idea的输出,那么你可以使用上面命令进行临时调试。

优点

  • 简单快捷:无需额外配置,适合快速查看日志。
  • 实时输出:方便调试时观察日志。

缺点

  • 无日志切割nohup.out 会无限增长,可能撑爆磁盘。
  • 无日志分级:所有日志混在一起,难以过滤 ERROR/DEBUG
  • 无归档策略:日志不会按日期或大小分割,难以管理。

文本编辑器

nano

nano filename.txt :使用nano这个文本编辑器查看或者编辑 filename.txt文件内容。

  • 按 Ctrl + O,然后按 Enter 确认保存,保存后不会自动退出哈。
  • 按 Ctrl + X 退出 nano,如果有未保存的更改,系统会提示是否保存,你输入y表示是。注意:保存操作,如果你选择以原来文件名保存就是改变原来文件内容,如果你选择改变文件名,就相当于是原来文件没有变,你创建了一个新文件保存这个内容,你不用原来的文件名保存,它还是会提示你一下是否确定用新的文件名保存内容,这个其实和window的记事本逻辑一样。
  • 按 Ctrl + W,然后输入文本,按 Enter,可以查找文本。

nano编辑器下面会有提示,^表示ctrl键。其他的就是直接按字符就行了。M-对应的是alt键。

vi

1
vi filename.txt 

效果:使用vi这个文本编辑器查看或者编辑 filename.txt文件内容。

vi有三种主要操作模式:

  1. 正常模式(Normal Mode):打开文件时默认的模式。在此模式下,你可以移动光标、删除文本、复制粘贴等。大多数命令都是在正常模式下输入的。正常模式按:,进入命令模式。
  2. 插入模式(Insert Mode):用于输入和编辑文本。在这个模式下,按下的键都会被输入到文件中。你可以通过按 i(插入之前)、a(插入之后)或 o(在下一行插入)进入插入模式。 插入模式按esc今日正常模式。
  3. 命令模式(Command Mode):用来执行保存、退出、搜索等命令。在正常模式下,按 : 进入命令模式。命令模式按esc回到正常模式。

操作:

  1. 退出vi:
    1. :w:保存文件。
    2. :q:退出程序。如果文件有更改,可能无法退出。
    3. :wq 或 ZZ:保存并退出。
    4. :q!:强制退出,不保存更改。
  2. 移动光标:使用箭头键,或者 h(左)、j(下)、k(上)、l(右)进行光标移动。
  3. 粘贴:正常模式下 按 p 粘贴复制的文本。
  4. 撤销和重做:在正常模式下,按 u 撤销上一步操作,按 Ctrl + r 重做操作。
  5. 查找:/sa回车。就是查询sa所在位置,你按n可以查询n可以查询下一个,按shift+n可以查询上一个。
  6. 清空所有行:在命令模式输入 : 1,$d即可
  7. 复制windows中的内容到vi:shift+insert进行粘贴
  8. 复制当前文件的全部内容:%或者输入ggVGy,可以直接复制整个文件内容到剪贴板。
  9. 复制vi编辑器中的全部内容到windows:我没有找到方便的做法,只有去文件管理器去进入文件编辑,全选复制(这个和windows中一样)。

访问网址

1
curl -X GET https://www.baidu.com

解释:以get请求的方式去发送请求到 https://www.baidu.com 。成功会返回页面的效果,如果是一个html,会返回一个文字,只是没有浏览器的渲染而已。你能看到 <title>百度一下,你就知道</title> 等内容。反正如果返回 HTML 或 JSON,就是正常的,如果提示拒绝连接(connection refused)就是访问不到。

  1. -X指定请求方法(GET、POST、PUT、DELETE)
  2. -H添加请求头-d添加请求体(POST/PUT 时常用)
  3. -H添加请求头-d添加请求体(POST/PUT 时常用)
  4. -F表单提交(支持文件)
  5. -o将响应写入文件
  6. -i显示响应头
  7. -v打印请求过程,调试用

查找进程并筛选进程

1
ps -ef | grep ruoyi-admin.jar
  • ps:用于显示当前系统的活动进程。
  • -e:表示显示所有用户的进程。
  • -f:表示以完整格式显示进程信息,包括进程号(PID)、父进程号(PPID)、用户、启动时间、占用的TTY、时间以及命令。
  • |:管道符,用于将前一个命令的输出传递给后一个命令。
  • grep:用于搜索文本中的特定字符串。
  • ruoyi-admin.jar:是我们要查找的字符串,意味着我们在寻找与这个 Java 应用程序相关的进程。

输出的结果如下:

1
2
yckj 2058118 1 4 2月10 ? 00:43:12 java -Xmx64G -Xms64G -jar ruoyi-admin.jar
yckj 2080487 2080462 0 09:25 pts/0 00:00:00 grep --color=auto ruoyi-admin.jar
  • 第一行解释:
    • yckj:运行进程的用户,表示这个进程是由 yckj 用户启动的。
    • 2058118:进程 ID (PID),这是该进程的唯一标识符。
    • 1:父进程 ID (PPID),表示这个进程是由进程 ID 为 1 的进程(通常是系统初始化进程)启动的。
    • 4:进程的优先级(优先级值),这个值越小,优先级越高。
    • 2月10:进程启动的日期,表示这个进程是在 2 月 10 日启动的。
    • ?:该进程没有关联的终端,通常表示它是一个后台进程。
    • 00:43:12:该进程的累计 CPU 时间,表示该进程自启动以来使用了 43 分 12 秒的 CPU 时间。
    • java -Xmx64G -Xms64G -jar ruoyi-admin.jar:执行的命令,表示这个进程是一个 Java 应用程序,使用了 -Xmx64G 和 -Xms64G 参数(分别表示最大和最小堆内存为 64GB),并且运行了 ruoyi-admin.jar。
  • 第二行解释:
    • yckj:同样是运行进程的用户。
    • 2080487:grep 命令的进程 ID。
    • 2080462:这是 grep 命令的父进程 ID,表示这个进程是由进程 ID 为 2080462 的进程启动的。
    • 0:进程的优先级。
    • 09:25:表示这个进程的启动时间。
    • pts/0:表示这个进程关联的终端(pseudo terminal slave),通常表示这是一个交互式的终端。
    • 00:00:00:该进程的累计 CPU 时间,表示这个进程几乎没有使用 CPU 时间。
    • grep –color=auto ruoyi-admin.jar:执行的命令,这个命令表示这个进程是用来搜索包含 ruoyi-admin.jar 的文本行。

总结:

  • 第一行可以看出,ruoyi-admin. jar 正在运行,并且它的 Java 进程正在使用大量的内存(最大和最小堆内存均为 64 GB)。
  • 第二行是 grep 命令的输出,显示了你用来查找 ruoyi-admin. jar 进程的命令本身。

多个命令一起执行

前面执行成功才能执行后面的命令

使用 && 连接多个命令即可。&& 表示前一个命令执行成功后再执行下一个命令。如果前一个命令失败(返回非零状态码),则后续命令不会执行。

例子:

比如要想下面三个指令一起执行。 cd /www/wwwroot/scripts./deploy.shps -ef | grep ruoyi-admin.jar

1
cd /www/wwwroot/scripts && ./deploy.sh && ps -ef | grep ruoyi-admin.jar

无论前面执行成功或者失败都会执行后面的命令

使用 ; 连接命令 ; 表示无论前一个命令是否成功,都会继续执行下一个命令。

比如:

1
cd /www/wwwroot/scripts; ./deploy.sh; ps -ef | grep ruoyi-admin.jar

总结:

  • 如果你希望只有 cd 和 ./deploy.sh 都成功执行后,才执行 ps -ef | grep ruoyi-admin.jar,使用 &&。
  • 如果你希望无论前面的命令是否成功,都执行 ps -ef | grep ruoyi-admin.jar,使用 ;。

个人站点链接

我的博客链接:https://blog.yimengtut.online/