2024-08-10

在Linux中,您可以使用nohup命令配合&符号来在后台运行Java项目。nohup命令可以防止在您退出终端后程序被中断,而&则是将程序放入后台执行。

以下是一个示例命令,它将启动一个Java应用程序并将输出重定向到当前目录下的app.log文件中,即使您退出当前会话,Java应用程序也会继续运行:




nohup java -jar your-application.jar > app.log 2>&1 &

解释:

  • java -jar your-application.jar 是启动Java应用程序的命令。
  • > 是重定向标准输出到文件的符号。
  • app.log 是输出文件的名称。
  • 2>&1 是将标准错误(stderr,文件描述符为2)重定向到标准输出(stdout,文件描述符为1)。
  • & 是将命令放入后台执行。
  • nohup 是使命令忽略挂断信号。

执行上述命令后,您会得到一个进程的PID,可以使用kill命令通过这个PID来停止程序,或者使用jobs命令查看并管理后台任务。

2024-08-10

CentOS Stream 9 的安装过程比较直接,以下是基于最新的安装指南进行的简化记录:

  1. 下载CentOS Stream 9 ISO镜像文件。
  2. 制作启动USB驱动器或光盘。
  3. 将USB驱动器或光盘插入目标计算机,重启并进入BIOS设置从USB或光盘启动。
  4. 启动安装程序并按照屏幕指示进行安装。

以下是一个基本的命令行示例,用于将ISO文件制作成启动USB:




sudo dd if=/path/to/centos-stream-9-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress oflag=sync

请将/path/to/centos-stream-9-x86_64-dvd.iso替换为ISO文件的实际路径,并将/dev/sdX替换为你的USB驱动器的实际设备路径。这个命令会将ISO内容写入USB驱动器,bs=4M设置了块大小为4MB,status=progress显示复制进度,oflag=sync确保写入操作同步进行以减少数据丢失风险。

请注意,这个过程将清除USB驱动器上的所有数据,请确保备份任何重要数据。此外,确保你选择了正确的设备路径,错误的设备路径可能会导致数据损失。在执行dd命令前,务必三思,并确认你已经备份了数据。

2024-08-10

adduser 是一个在 Linux 系统中用于创建新用户的命令。这个命令可以创建用户账户,设置用户密码,并且通常会自动创建用户的家目录。

基本语法:




adduser [options] username

示例:

  1. 创建一个新用户:



sudo adduser johndoe
  1. 创建用户并设置密码:



sudo adduser --password passw0rd johndoe
  1. 创建用户并指定用户信息:



sudo adduser --home /home/johndoe --shell /bin/bash --no-user-group --group johndoe --ingroup users johndoe

在这个例子中,--home 指定了用户的家目录,--shell 指定了用户的默认 shell,--no-user-group 表示不创建与用户同名的组,--group 指定了用户所属的主组,--ingroup 指定了用户所属的附加组。

请注意,你需要具有足够的权限来创建用户,通常需要使用 sudo

2024-08-10

心跳机制是一种检测TCP连接存活的方式,通常在没有数据传输的空闲时间间隔发送一个特殊的数据包,以此来确认连接的有效性。

在Linux下使用socket编程实现心跳机制,通常需要设置socket选项SO_KEEPALIVE,并且可以设置相关参数tcp_keepalive_timetcp_keepalive_intvltcp_keepalive_probes来调整心跳的行为。

以下是一个简单的示例,展示如何在客户端和服务器端设置心跳机制:

服务器端设置心跳:




int enable = 1;
if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &enable, sizeof(enable)) < 0) {
    // 设置socket选项SO_KEEPALIVE
    perror("setsockopt keepalive");
}

客户端设置心跳:




int enable = 1;
if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (void *)&enable, sizeof(enable)) < 0) {
    // 设置socket选项SO_KEEPALIVE
    perror("setsockopt keepalive");
}

心跳的间隔和重试次数可以通过以下方式设置:




int time = 75; // 每75秒发送心跳包
int interval = 5; // 连续5次心跳包没有响应则认为连接断开
int probes = 2; // 发送心跳包的次数
 
setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, &time, sizeof(time));
setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPCNT, &probes, sizeof(probes));

在实际应用中,心跳包通常是自定义的数据,发送的内容可以是特定的字节序列,用来确保连接的有效性。在接收方,如果连续一段时间内没有接收到心跳包,可以主动关闭连接,或者发送报警信息。

2024-08-10

WSL2 Linux子系统是Windows 10和Windows 11的特性,它允许用户在Windows上运行Linux子系统,而不需要虚拟机或双引导设置。这是一个高级主题,涉及到配置和管理Linux环境。

如果您需要在WSL2中安装软件,您可以使用Linux命令行界面。以下是一些基本步骤:

  1. 打开WSL2 Linux子系统。
  2. 确保您的子系统是最新的,并且已经安装了所需的Linux发行版。
  3. 使用Linux包管理器安装软件。不同的Linux发行版有不同的包管理器,例如Debian和Ubuntu使用apt,而Fedora和CentOS使用yumdnf

例如,在Ubuntu中安装软件:




sudo apt update          # 更新软件包列表
sudo apt upgrade         # 升级所有可升级的软件包
sudo apt install <package_name>  # 安装软件包

如果您需要安装特定版本的软件包或者从PPA安装,您可以使用apt-getapt命令的特定选项。

如果您需要更具体的命令或步骤,请提供更多的上下文信息。

2024-08-10

TinyProxy 是一个轻量级的 HTTP 和 HTTPS 代理服务器,适用于类 Unix 系统。以下是如何在 Linux 系统上安装和配置 TinyProxy 以便使用它访问互联网的步骤:

  1. 安装 TinyProxy:



sudo apt-get update
sudo apt-get install tinyproxy
  1. 配置 TinyProxy:

编辑 TinyProxy 的配置文件 /etc/tinyproxy/tinyproxy.conf。你可能需要调整以下设置:

  • Port:代理服务器监听的端口,默认为 8888。
  • Allow:允许连接到代理服务器的客户端 IP 地址范围,默认为 127.0.0.1
  • Deny:拒绝连接到代理服务器的客户端 IP 地址范围。
  • Authenticate:是否需要身份验证。
  • UsernamePassword:身份验证所需的用户名和密码。

例如,将监听端口改为 8080:




Port 8080
  1. 启动 TinyProxy 服务:



sudo systemctl start tinyproxy
  1. 配置防火墙允许访问 TinyProxy 端口(如果有防火墙运行):



sudo ufw allow 8080/tcp
  1. 客户端配置:

在需要通过 TinyProxy 访问互联网的客户端上,设置代理服务器地址为第一台 Linux 服务器的 IP 地址和 TinyProxy 监听的端口。

例如,在命令行中使用环境变量:




export http_proxy=http://<tinyproxy-server-ip>:8080
export https_proxy=https://<tinyproxy-server-ip>:8080

或者在浏览器设置中指定代理服务器。

以上步骤和配置是基于默认设置,根据实际需求和安全策略可能需要进行相应的调整。

2024-08-10



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
 
int main() {
    int sv[2];
    int ret;
    char buf[100];
    struct iovec iov;
    struct msghdr msg;
 
    // 创建一个unix域的socket对
    ret = socketpair(AF_UNIX, SOCK_STREAM, 0, sv);
    if (ret == -1) {
        perror("socketpair");
        exit(1);
    }
 
    // 写数据
    iov.iov_base = "Hello, World!";
    iov.iov_len = strlen("Hello, World!");
    msg.msg_iov = &iov;
    msg.msg_iovlen = 1;
    if (sendmsg(sv[0], &msg, 0) == -1) {
        perror("sendmsg");
        exit(1);
    }
 
    // 读数据
    iov.iov_base = buf;
    iov.iov_len = sizeof(buf);
    msg.msg_iov = &iov;
    msg.msg_iovlen = 1;
    if ((ret = recvmsg(sv[1], &msg, 0)) == -1) {
        perror("recvmsg");
        exit(1);
    }
 
    // 输出读取的数据
    buf[ret] = '\0';
    printf("Received: %s\n", buf);
 
    // 关闭socket对
    close(sv[0]);
    close(sv[1]);
 
    return 0;
}

这段代码首先创建了一对unix域的socket对,然后使用sendmsg发送消息,使用recvmsg接收消息,并将接收到的数据输出到控制台。代码示例简洁,易于理解,并且包含了错误处理。

2024-08-10



#!/bin/bash
 
# 定义源目录和目标目录变量
source_dir="/path/to/source"
dest_dir="/path/to/destination"
 
# 创建目标目录,如果不存在的话
mkdir -p "$dest_dir"
 
# 使用rsync进行增量备份
rsync -av --delete "$source_dir/" "$dest_dir/"
 
# 打印备份完成的信息
echo "备份已完成。"

这段代码演示了如何使用rsync命令来执行文件的增量备份。它首先定义了源目录和目标目录的路径,然后创建目标目录(如果它不存在的话),并使用rsync命令进行备份。rsync的参数-av启用了归档模式并提供了详细输出,--delete选项确保目标目录中只包含源目录中存在的文件,即实现了增量备份。

2024-08-10



#!/bin/bash
 
# 更新系统软件仓库为中国区镜像
 
# 移除旧的仓库文件
sudo rm -f /etc/yum.repos.d/CentOS-*
sudo rm -f /etc/yum.repos.d/rocky-*.repo
 
# 更新dnf/yum软件包索引(可选)
sudo dnf clean all
sudo dnf makecache
 
# 添加中国区镜像仓库
echo "[rocky-os]
name=Rocky OS \$releasever - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/rockylinux/releases/\$releasever/\$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
 
[rocky-appstream]
name=Rocky AppStream \$releasever - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/rockylinux/releases/\$releasever/\$basearch/appstream/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
" | sudo tee /etc/yum.repos.d/rocky-mirror.repo
 
# 再次更新dnf/yum软件包索引
sudo dnf clean all
sudo dnf makecache
 
echo "已将软件仓库更新为中国区镜像。"

这段代码首先移除旧的仓库文件,然后添加了清华大学提供的Rocky Linux中国区镜像仓库。更新软件包索引是可选的,但推荐执行以确保后续的软件安装/更新操作能正常进行。

2024-08-10

在Linux系统中,审计日志是安全控制的核心部分,它记录了系统中发生的各种事件,包括用户登录信息、文件访问、程序执行等。

Linux提供了几个标准的日志查看工具,如lastwhowlastlog等,以及/var/log目录下的日志文件,如/var/log/auth.log(用于记录用户认证日志)、/var/log/syslog(系统日志)等。

以下是查看和分析Linux审计日志的一些基本命令和方法:

  1. 查看用户登录历史:



last
  1. 查看当前登录用户:



who
  1. 查看当前登录用户详细信息:



w
  1. 查看特定用户的登录历史:



lastlog -u username
  1. 查看认证日志(如SSH登录尝试):



sudo less /var/log/auth.log
  1. 使用grep搜索特定事件:



sudo grep "Oct 29" /var/log/auth.log
  1. 查看系统日志:



sudo less /var/log/syslog
  1. 使用journalctl查看系统日志(systemd系统):



sudo journalctl
  1. 审计文件和目录的更改:



sudo auditctl -w /path/to/file -p wa
sudo aureport -au

这些命令和方法可以帮助管理员检查和分析Linux系统的安全审计日志,从而确保系统的安全性。