基础命令
退出交互:Ctrl+C
授予所有用户读、写、执行权限,用于文件:
chmod 777 filename/directory
filename 的权限设置为所有用户(所有者、群组和其他用户)都具有读取、写入和执行权限。directory 的权限设置为所有用户都具有读取、写入和执行权限,以便他们可以在目录中执行任何操作。如果想给文件设置所有者具有读取和写入权限,而群组和其他用户没有任何权限,可以使用以下命令(通常用于保护文件的隐私和安全性):
chmod 600 filename
这里的数字模式中:
vi/vim命令:vi是一种经典的文本编辑器,vim是vi的改进版本。它们都提供了丰富的编辑功能。
vi filename
在vi/vim中,可以使用以下命令进行保存和退出:
: 进入命令模式。a 进入编辑模式。wq 保存并退出。!q 强制退出(如果文件已更改)。-f:实时追踪要查看文件的内容,可以使用以下命令:
cat filename
less filename
按下空格键向下翻页,按下 b 键向上翻页,按下 / 键进行搜索。
less,用于逐页查看文件内容,但功能较少。more filename
按下空格键向下翻页,按下 b 键向上翻页。
下面是关于常见的压缩格式以及相应解压缩参数的说明:
tar 格式:
tar 是一种归档文件格式,用于将多个文件打包成一个文件,但不进行压缩。通常与其他压缩工具(如 gzip、bzip2)一起使用来创建压缩文件。-x:解压缩操作。-v:显示详细输出,列出解压缩的文件。-f:指定要解压缩的文件。tar.gz 和 tar.bz2 格式:
tar 打包后分别使用 gzip 和 bzip2 进行压缩的结果。.tar.gz 格式也称为 .tgz,.tar.bz2 格式也称为 .tbz2。-x:解压缩操作。-v:显示详细输出,列出解压缩的文件。-z(仅用于 .tar.gz):使用 gzip 解压缩。-j(仅用于 .tar.bz2):使用 bzip2 解压缩。-f:指定要解压缩的文件。zip 格式:
unzip 命令解压缩文件即可。这些是常见的压缩格式以及相应的解压缩参数。使用正确的参数可以确保正确地解压缩文件并恢复原始文件或目录。
在Linux下,文件的解压缩可以使用以下常见命令:
解压缩 .tar 文件:
tar -xvf file.tar
这会将 file.tar 解压缩到当前目录,并显示解压缩的过程。
解压缩 .tar.gz 或 .tgz 文件:
tar -xzvf file.tar.gz
或者:
tar -xzvf file.tgz
这会将 file.tar.gz 或 file.tgz 解压缩到当前目录,并显示解压缩的过程。-z 选项告诉 tar 使用 gzip 压缩算法。
解压缩 .tar.bz2 文件:
tar -xjvf file.tar.bz2
这会将 file.tar.bz2 解压缩到当前目录,并显示解压缩的过程。-j 选项告诉 tar 使用 bzip2 压缩算法。
解压缩 .zip 文件:
unzip file.zip
这会将 file.zip 解压缩到当前目录,并显示解压缩的过程。
tart打包压缩:
tar -cvf output.tar inputfile1 inputfile2 inputfile3 ...
这会将 inputfile1、inputfile2、inputfile3 等文件打包到名为 output.tar 的 tar 文件中。(目录同理)具体参数的含义如下:
-c:创建一个新的 tar 文件。-v:显示详细信息,列出打包的文件。-f:指定打包文件的名称。要注意的是,打包文件时,不会对文件进行压缩,只是将文件集合到一个单独的 tar 文件中。如果需要对文件进行压缩,可以使用额外的压缩参数(如 -z 或 -j)来在打包时进行压缩。
zip压缩:
要将目录打包成 zip 文件,可以使用 zip 命令。下面是打包目录为 zip 文件的基本语法:
zip -r output.zip directory/
这会将名为 directory 的目录及其所有内容递归地打包到名为 output.zip 的 zip 文件中。注意参数-r:递归地将目录及其内容添加到 zip 文件中。
ps 命令查看当前正在运行的进程,看是否有 MySQL 相关的进程正在运行:ps aux | grep mysql<PID>常用于日志写入文件,比如如果你想要实时监视日志并将其保存到文件中,你可以使用以下命令:
journalctl -u your-service-name.service -f > your-service-log.txt
这个命令将实时监视指定服务的日志,并将输出附加到指定的文件中,使其不断更新。
lrzsz 是一个在Linux命令行中使用的工具,它提供了一种简单的方式来通过串行线路上传(发送)和下载(接收)文件。这个工具包含了 rz(receive Zmodem)和 sz(send Zmodem)两个命令,它们分别用于接收和发送文件。
rz 命令允许您从本地计算机上传文件到远程Linux服务器,而 sz 命令则用于从远程服务器下载文件到本地计算机。
要使用 lrzsz,您首先需要在远程服务器上安装 lrzsz 包。在许多Linux发行版中,您可以使用包管理器来安装它。例如,在基于Debian的系统(如Ubuntu)上,您可以使用以下命令:
sudo apt-get install lrzsz
在安装了 lrzsz 之后,您可以通过SSH会话使用这些命令。以下是使用 rz 和 sz 的示例:
rz 命令。这将打开一个文件选择对话框,允许您选择要上传的文件。选择文件后,它们将被上传到远程服务器的当前目录。
rz
sz 命令后面跟上您想要下载的文件名。这将提示您在本地计算机上选择一个目录来保存下载的文件。
sz filename
请注意,rz 和 sz 命令需要在您的SSH客户端中正确配置,以便能够打开文件选择对话框。有些SSH客户端可能不支持这种交互式命令,或者可能需要额外的配置。如果您在使用 rz 或 sz 时遇到问题,您可能需要尝试使用其他方法来上传或下载文件,如 scp 或 sftp。curl 是一个在命令行或脚本中向/从服务器传输数据的工具,支持许多协议,包括 HTTP、HTTPS、FTP、FTPS、SCP 等。curl 命令在 Linux、Windows、macOS 等操作系统中广泛可用,并且是许多开发者和服务工程师的常用工具。
以下是一些使用 curl 的基本示例:
curl 将远程文件下载到本地文件系统:
curl -O https://example.com/file.txt
这里,-O 选项告诉 curl 将下载的文件以远程文件的名称保存。您也可以使用 -o 选项后跟一个自定义的文件名。curl 通过 HTTP POST 请求上传文件到服务器。这通常用于向 web 服务上传数据:
curl -F "[email protected]" https://example.com/upload
在这个例子中,-F 选项用于指定表单数据,[email protected] 表示表单中的一个名为 file 的字段,其内容来自本地的 localfile.txt 文件。-H 选项来设置 Content-Type 头,并使用 -d 选项来提供 JSON 数据:
curl -H "Content-Type: application/json" -d '{"key": "value"}' https://example.com/api
curl 不会跟随 HTTP 重定向。如果您需要跟随重定向,可以使用 -L 选项:
curl -L https://example.com/redirect
-u 选项:
curl -u username:password https://example.com/protected
service 和 systemctl 是两个用于管理系统服务的命令,它们在不同的 Linux init 系统中起作用。
service 命令:
service 命令用于启动、停止、重新加载或查询系统服务的状态。service 命令是管理系统服务的主要方式。service cron reload。systemctl 命令:
systemctl 命令用于控制 Systemd 初始化系统中的服务。systemctl 已经成为管理系统服务的主要方式。systemctl reload cron。要查看Linux上所有正在运行的系统服务,以及哪些服务将在开机时自动启动,可以使用以下命令:
systemctl list-unit-files --type=service
这将列出所有已安装的服务以及它们的状态(启用或禁用),以及它们是否在启动时自动启动。 若要查看当前正在运行的服务,您可以运行:
systemctl list-units --type=service
对于使用 Systemd 创建的服务,你可以通过以下方式来查看服务的日志:
使用 journalctl 命令:
journalctl -u index12306-aggregation.service
这会显示出与 index12306-aggregation.service 相关的日志信息,包括启动、停止、重启以及服务输出的日志内容。
如果你想要查看最新的日志信息,可以使用 -f 参数:
journalctl -u index12306-aggregation.service -f
这会持续显示最新的日志信息,直到你按下 Ctrl + C 停止。
若要查看特定时间范围内的日志,可以使用 --since 和 --until 参数:
journalctl -u index12306-aggregation.service --since "2024-03-13 00:00:00" --until "2024-03-14 00:00:00"
这会显示从指定时间范围内与 index12306-aggregation.service 相关的日志信息。
你也可以将日志输出到文件中以便稍后查看:
journalctl -u index12306-aggregation.service > /path/to/logfile.txt
将日志信息重定向到指定的文件中,方便日后查看。
我们可以把所有启动任务都交给系统服务管理,服务单元结构文件如下:
[Unit]:该部分包含服务单元的基本信息。
Description:描述服务的目的或功能。After:指定服务应该在哪个目标之后启动。[Service]:该部分包含了配置服务的具体参数。
User:指定服务运行的用户。WorkingDirectory:指定服务的工作目录。ExecStart:指定服务的启动命令和参数。StandardOutput:指定服务的标准输出文件路径。StandardError:指定服务的标准错误输出文件路径。Restart:配置服务在意外退出时的行为。[Install]:该部分包含了服务的安装相关信息。
WantedBy:指定服务所属的目标。journalctl 管理。StandardOutput 和 StandardError 选项指定日志输出到文件,而不是重定向到 journalctl。对于启动 Gateway(Jar包) 的命令,也可以将其改造成一个 Systemd 服务单元文件,以便更加规范和方便地管理该服务。以下是改造步骤:
创建一个新的 Systemd 服务单元文件,比如 index12306-gateway.service:
sudo vi /etc/systemd/system/index12306-gateway.service
在该文件中输入以下内容:
[Unit]
Description=Index 12306 Aggregation Service
After=network.target
[Service]
User=root
WorkingDirectory=/home/12306
ExecStart=/usr/local/java/zulu17.44.53-ca-jdk17.0.8.1-linux_x64/bin/java \
-Xms1024m -Xmx1536m \
-Dunique-name=-XXX \
-Dframework.cache.redis.prefix=XXX: \
-Dspring.data.redis.password=XXX \
-Dspring.data.redis.port=XXX \
-Dspring.data.redis.host=XXX \
-Drocketmq.name-server=XXX \
-Dspring.cloud.nacos.discovery.server-addr=XXX \
-Dpay.alipay.notify-url=http://XXX:9000/api/pay-service/callback/alipay \
-jar /home/12306/index12306-aggregation-service.jar
StandardOutput=file:/home/12306/logs/index12306-gateway-service.log
StandardError=file:/home/12306/logs/index12306-gateway-service.log
Restart=always
[Install]
WantedBy=multi-user.target
保存并关闭文件。
重新加载 Systemd 管理器配置:
sudo systemctl daemon-reload
启动你的服务:
sudo systemctl start index12306-gateway.service
如果一切正常,设置开机自启动:
sudo systemctl enable index12306-gateway.service
通过这种方式,你就可以使用 Systemd 来管理你的 Gateway 服务了,享受更好的管理和控制。
参考原文:云服务器定时清理内存怎么设置_mob649e815e258d的技术博客_51CTO博客
在云服务器上运行的应用程序通常会占用大量的内存资源,如果不及时清理内存,会导致服务器性能下降甚至崩溃。本项目方案旨在通过设置定时任务,定期清理云服务器的内存,提高服务器的稳定性和性能。
本项目将使用以下技术进行实现:
确定清理内存的方法: 在Linux系统中,可以使用sync、echo 1 > /proc/sys/vm/drop_caches等命令来清理内存。
编写清理内存的脚本: 首先,我们需要创建一个Shell脚本文件,用于执行清理内存的命令。创建一个名为clean_memory.sh的文件,并将以下代码复制到文件中:
#!/bin/bash
# 清理内存
echo 1 > /proc/sys/vm/drop_caches
echo "Memory cleaned!"
设置定时任务:
使用cron工具可以方便地设置定时任务。我们可以编辑cron表达式来指定定时任务的执行时间。执行以下命令来编辑cron表达式:
crontab -e
在打开的编辑器中,添加以下一行,表示每天凌晨1点执行清理内存的脚本:
0 1 * * * /bin/bash /path/to/clean_memory.sh
请注意替换/path/to/clean_memory.sh为实际的脚本文件路径。
保存并退出编辑器。
启用定时任务:
通常情况下,Linux系统中使用的是 cron 服务来管理定时任务,但有些系统可能使用了其他的服务名,如 crond
定时任务的设置已经完成,我们需要重新加载cron服务以使其生效。执行以下命令来重新加载cron服务:
systemctl reload crond
至此,云服务器定时清理内存的设置已完成。
测试与验证:
为了验证定时任务是否正常工作,您可以手动执行一次清理内存的脚本来测试。执行以下命令来手动执行脚本:
/bin/bash /path/to/clean_memory.sh
如果一切正常,您将看到一条"Memory cleaned!"的输出。
free -h:这将以人类可读的方式显示内存占用情况top命令可以实时查看系统中各个进程的内存占用情况虽然但是,Linux有一个非常强大的三方工具:htop-dev/htop:htop - 交互式进程查看器 --- htop-dev/htop: htop - an interactive process viewer (github.com)
怎么描述呢,就相当于Win系统任务管理器了!
sudo apt install htop # 如果你使用的是Debian/Ubuntu等系统
sudo yum install htop # 如果你使用的是CentOS/RHEL等系统 htop

htop 使用不同的颜色来标识不同的进程和资源使用情况,以提供更直观的视觉表示。以下是 htop 中使用的一些颜色及其含义:
请注意,颜色显示可能会因终端设置、主题或配置文件而有所不同。您可以根据自己的喜好和需求进行定制。如果您希望禁用颜色显示,可以在启动 htop 时使用 --no-color 参数。
表头含义:
htop的帮助文档,了解更多关于界面各项的详细信息。htop显示的进程列表,只显示部分进程。htop显示的进程列表,显示更多进程。htop命令,当然,按下键盘上的 q 键也可以顺利退出!!!htop已经接近了任务管理器的功能了,可以通过鼠标点击 + 回车的方式,实现杀死进程,选择一个红色块内容后,点击F9,弹出红框,选择一个:9 SIGKILL

按下Enter是执行kill -9 XXXX。Esc是取消!
干净的进程显示:
隐藏重复进程:将 Hide kernel threads 和 Hide userland process thread 选项选中,这样做可以隐藏内核线程和用户空间线程,使进程列表更加清晰。
使用 htop 的过程中会发现有很多同样的进程被标注了绿色大量显示。如下图所示。

这使得在大量程序运行时想要找到需要观察的进程变的困难。如何省略这些重复现实的进程呢?

更换配色:

当服务器内存不足时,操作系统通常会使用 OOM Killer 杀死一些进程以释放内存。在某些情况下,这可能导致重要的进程被终止,例如 SSH 进程,从而导致服务器无法远程连接。为了避免这种情况,我们可以通过禁用 OOM Killer 来保护特定进程,例如 SSH 进程。
一种方法是使用 crontab 定时任务来定期禁用 OOM Killer。下面是实现这一目标的具体步骤:
编辑 crontab 文件:
crontab -e
添加以下行到 crontab 文件中:
*/1 * * * * root pgrep -f "/usr/sbin/sshd" | while read PID; do echo -17 > /proc/$PID/oom_adj; done
这个命令的含义是每分钟执行一次,并且会查找正在运行的名为 "/usr/sbin/sshd" 的进程,并为每个进程禁用 OOM Killer。
保存并退出 crontab 文件。
通过执行以上步骤,我们成功地设置了一个定时任务,该任务会每分钟执行一次,并禁用正在运行的 SSH 进程的 OOM Killer。这样,在服务器内存不足时,SSH 进程将不会被意外终止,确保了服务器的可远程连接性。