2024-08-16

在WSL中,默认情况下,当你打开一个新的shell时,你是作为当前的Windows用户账户进行访问的。如果你想要切换到root用户,你需要知道root账户默认是没有密码的。你可以通过以下步骤来设置或更改root账户的密码,并且登录为root用户:

  1. 打开WSL的shell(例如Ubuntu或者其他Linux发行版)。
  2. 输入 sudo passwd root 命令。
  3. 当提示输入新的UNIX密码时,输入你想要设置的密码,然后重新输入一次以确认。
  4. 之后,你可以通过输入 su - 然后输入你刚才设置的密码来切换到root用户。

以下是在WSL shell中执行这些步骤的示例:




$ sudo passwd root
[sudo] password for your_username: [输入你的用户密码]
New password: [输入你想要设置的root密码]
Retype new password: [重复你设置的root密码]
passwd: password updated successfully
$ su -
Password: [输入你刚才设置的root密码]
# 现在你是root用户

完成这些步骤后,你就可以在WSL中作为root用户操作Linux系统了。请注意,出于安全考虑,通常不推荐在日常使用中保持以root用户身份操作,因为这可能会导致系统安全风险。

2024-08-16

在Linux中,常用的压缩与解压缩命令包括tar, gzip, bzip2, zipunzip。以下是一些基本的命令示例:

tar

压缩文件或文件夹:




tar -czvf archive.tar.gz /path/to/directory

解压缩文件:




tar -xzvf archive.tar.gz -C /target/directory

gzip

压缩文件:




gzip filename

解压缩文件:




gunzip filename.gz

或者




gzip -d filename.gz

bzip2

压缩文件:




bzip2 filename

解压缩文件:




bunzip2 filename.bz2

或者




bzip2 -d filename.bz2

zipunzip

压缩文件或文件夹:




zip -r archive.zip /path/to/directory

解压缩文件:




unzip archive.zip -d /target/directory

注意:-c 通常用于将输出发送到控制台,-v 代表详细输出,-f 指定文件名,-r 表示递归压缩文件夹,-z 用于gzip,-j 用于bzip2,-d 用于解压缩。

2024-08-16

CentOS 9 的正式发布时间尚未确定,但我们可以假设你想要安装和配置一个CentOS 9的环境。CentOS 9将会使用dnf作为包管理器,而不是CentOS 8中使用的yum。以下是一个基本的安装和配置步骤:

  1. 创建一个CentOS 9的虚拟机或者物理安装。
  2. 确保你的硬件和ISO镜像兼容CentOS 9。
  3. 启动并进入安装程序。
  4. 选择“Install CentOS Stream 9”并遵循屏幕上的提示进行安装。
  5. 安装完成后,配置网络、设置主机名、创建用户和密码。
  6. 启动系统并登录。

配置示例:




# 更新系统
sudo dnf update
 
# 安装一个必要的软件包
sudo dnf install httpd
 
# 启动httpd服务
sudo systemctl start httpd
 
# 设置httpd服务开机自启
sudo systemctl enable httpd
 
# 配置防火墙允许HTTP和HTTPS流量
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

请注意,CentOS 9的确切发布日期和详细安装步骤可能会在未来几个月内发生变化。因此,最新的安装步骤应该参考CentOS官方文档或者CentOS 9的发布公告。

2024-08-16

宝塔面板(BT-Panel)是一款服务器管理软件,它可以帮助用户轻松管理自己的Linux服务器。如果你需要通过Linux命令行来重启宝塔面板,可以按照以下步骤操作:

  1. 打开终端。
  2. 输入以下命令来停止宝塔面板服务:



bt stop
  1. 等待宝塔面板停止,然后输入以下命令来启动宝塔面板:



bt start

如果你需要强制重启宝塔面板,可以使用以下命令:




bt restart

这些命令假设你已经在服务器上安装了宝塔面板,并且bt命令在你的PATH路径中。如果bt命令不在PATH中,你可能需要先导航到宝塔面板的安装目录,或者使用完整路径来执行这些命令。例如:




/www/server/panel/panel/bt restart

请确保你有足够的权限来执行这些命令,通常需要root权限。如果你不是root用户,你可能需要在命令前加上sudo来获取必要的权限。

2024-08-16

为了使用Jenkins自动构建Spring Boot项目并在服务器上运行,你需要完成以下步骤:

  1. 安装Jenkins和配置。
  2. 安装Subversion(SVN)客户端。
  3. 在Jenkins中配置一个新的作业,并设置源代码管理为Subversion。
  4. 配置构建触发器和构建环境。
  5. 在构建环境中,添加执行Shell脚本的步骤,用于编译项目并打包Spring Boot JAR。
  6. 使用SSH Send Files插件或SSH Slaves插件将JAR包复制到远程服务器。
  7. 在远程服务器上,编写一个启动脚本,用于启动Spring Boot应用程序。
  8. 配置远程服务器上的定时任务或者直接通过SSH执行启动脚本。

以下是Jenkins的配置步骤和相关Shell脚本示例:

Jenkins配置步骤:

  1. 安装Jenkins和SVN。
  2. 在Jenkins中创建一个新的作业。
  3. 在源代码管理部分,填写SVN仓库的URL。
  4. 在构建触发器中,选择适合你的触发条件(如定时或者提交代码时)。
  5. 在构建环境中,配置环境变量。
  6. 添加构建步骤,选择执行shell。
  7. 在Shell脚本中编写构建和打包命令。
  8. 安装SSH Send Files插件,并配置远程服务器的连接信息。
  9. 添加Send Files步骤,指定要发送的文件和目标服务器。
  10. 在远程服务器上配置定时任务或者SSH直接执行启动脚本。

Shell脚本示例:




#!/bin/bash
# 清理工作空间
rm -rf /var/lib/jenkins/workspace/your-job-name/*
 
# 从SVN更新代码
svn update /var/lib/jenkins/workspace/your-job-name
 
# 构建Spring Boot项目
cd /var/lib/jenkins/workspace/your-job-name
mvn clean package
 
# 复制JAR到远程服务器
scp target/your-app.jar user@remote-server:/path/to/your/app.jar
 
# 在远程服务器上启动应用程序
ssh user@remote-server /path/to/your/start-app.sh

start-app.sh脚本示例:




#!/bin/bash
cd /path/to/your/
nohup java -jar /path/to/your/app.jar > /path/to/your/app.log 2>&1 &

确保Jenkins具有执行SVN更新、编译和复制文件的权限,同时远程服务器上的相关目录权限也应当设置正确。此外,SSH连接需要配置免密登录,以便Jenkins能自动化执行这些步骤。

2024-08-16

在Linux系统中,socket编程接口是一种允许用户在程序中实现网络通信的方式。它提供了一组函数,使得开发者可以创建并管理网络连接,发送和接收数据。

以下是一个简单的socket编程接口的例子,展示了如何创建一个基本的TCP socket并进行连接:




#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
 
int main(int argc, char *argv[]) {
    int sockfd;
    struct sockaddr_in serv_addr;
 
    if (argc != 3) {
        printf("usage: %s <IP> <port>\n", argv[0]);
        return 1;
    }
 
    // 创建socket
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
 
    // 定义服务器地址
    memset(&serv_addr, '0', sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(atoi(argv[2]));
    inet_pton(AF_INET, argv[1], &serv_addr.sin_addr);
 
    // 连接服务器
    if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
        perror("connect failed");
        return 1;
    }
 
    // 接下来可以使用sockfd进行数据发送和接收操作
 
    close(sockfd);
    return 0;
}

这段代码展示了如何创建一个TCP socket,如何解析命令行参数来设置服务器的IP地址和端口号,以及如何使用connect函数来尝试连接服务器。如果连接成功,可以使用sendrecv函数来发送和接收数据。最后,代码关闭了socket连接。

这只是socket编程的一个简单示例,实际应用中还会涉及到并发处理、错误处理、数据格式化等许多复杂的问题。

2024-08-16

在Linux中,可以使用tar命令来打包和解压文件。以下是打包和压缩文件的示例代码:

打包(不压缩):




tar -cvf archive_name.tar /path/to/directory

打包并使用gzip压缩:




tar -czvf archive_name.tar.gz /path/to/directory

打包并使用bzip2压缩:




tar -cjvf archive_name.tar.bz2 /path/to/directory

解压缩到当前目录:




tar -xvf archive_name.tar

解压缩到指定目录:




tar -xvf archive_name.tar -C /target/directory

解压缩gzip压缩的文件:




tar -xzvf archive_name.tar.gz

解压缩bzip2压缩的文件:




tar -xjvf archive_name.tar.bz2

在这些命令中:

  • c 代表创建新的归档文件。
  • x 代表解压缩。
  • v 代表显示详细信息。
  • f 指定归档文件的名称。
  • z 用于gzip压缩。
  • j 用于bzip2压缩。
  • t 可以用来查看tar文件内容而无需解压。
2024-08-16

在Linux系统中,可以使用sigaction函数来设置信号的处理方式,包括捕捉(capture)信号。以下是一个简单的示例,展示了如何捕捉SIGINT信号(当用户按下Ctrl+C时发出)并打印一条消息。




#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
 
void handle_sigint(int sig) {
    write(1, "Captured SIGINT\n", 16);
}
 
int main() {
    struct sigaction sa;
    sa.sa_handler = &handle_sigint;
    sa.sa_flags = 0; 
    sigemptyset(&sa.sa_mask);
 
    if (sigaction(SIGINT, &sa, NULL) == -1) {
        perror("sigaction");
        exit(EXIT_FAILURE);
    }
 
    while(1) {
        pause(); // 暂停进程直到信号到来
    }
 
    return 0;
}

在这个例子中,我们定义了一个信号处理函数handle_sigint,当捕捉到SIGINT信号时,它会打印一条消息。然后我们使用sigaction函数来设置信号处理动作,捕捉SIGINT信号。程序会一直循环等待,直到有信号发生。当用户发送SIGINT信号(比如按下Ctrl+C),程序会调用handle_sigint函数来处理该信号。

2024-08-16

在Linux系统中,我们可以使用ssh-keygen和ssh-copy-id命令来实现SSH密钥的创建和复制,从而实现免密登录远程服务器。

方法一:使用ssh-keygen和ssh-copy-id命令

步骤1:在本地主机上生成SSH密钥对




ssh-keygen -t rsa -b 4096

步骤2:使用ssh-copy-id命令将公钥复制到远程主机上




ssh-copy-id user@remote_host

步骤3:登录远程主机,此时应不需要密码




ssh user@remote_host

方法二:手动复制SSH公钥到远程主机

步骤1:在本地主机上生成SSH密钥对




ssh-keygen -t rsa -b 4096

步骤2:将生成的公钥复制到远程主机的~/.ssh/authorized\_keys文件中




cat ~/.ssh/id_rsa.pub | ssh user@remote_host 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

步骤3:登录远程主机,此时应不需要密码




ssh user@remote_host

注意:在以上的命令中,user是你的用户名,remote\_host是你的远程主机的地址。

Linux scp命令用于在Linux下进行远程文件拷贝,它的命令行参数与cp命令类似。

基本格式:




scp [参数] [原路径] [目标路径]

常用参数:

-v 和较详细的输出

-C 使能压缩选项

-r 目录时使用

-P 选择端口

例如,将本地文件复制到远程服务器:




scp local_file.txt user@remote_host:/remote/directory/

将远程服务器上的文件复制到本地:




scp user@remote_host:/remote/file/path/local_file.txt

注意:在以上的命令中,user是你的用户名,remote\_host是你的远程主机的地址,/remote/directory/和/remote/file/path/是你想要复制到的远程主机上的目录或文件路径。

2024-08-16

在bash脚本中引入延迟通常是有用的,特别是当你需要让脚本在执行下一步操作前等待一段时间。sleep命令可以用来在脚本中实现这种延迟。

sleep命令的基本语法如下:




sleep NUMBER[SUFFIX]

其中NUMBER是你想让脚本暂停的秒数,SUFFIX可以是以下任何一个:

  • s代表秒(seconds)
  • m代表分钟(minutes)
  • h代表小时(hours)
  • d代表天(days)

例如,如果你想让脚本等待5秒,你可以使用以下命令:




sleep 5

如果你想让脚本等待1分钟,你可以使用以下命令:




sleep 1m

在bash脚本中使用sleep时,请注意以下几点:

  1. 使用sleep时,如果脚本因为接收到信号而提前终止,sleep操作可能不会被取消。
  2. 如果sleep的数值超出了正常的整数范围,你需要使用特定的时间后缀。
  3. 如果脚本中有多个sleep命令,它们会按顺序执行。
  4. 在某些情况下,使用sleep可能不是最佳实践,因为它会使得脚本的执行变得同步和阻塞,可能会影响脚本的性能。

下面是一个简单的bash脚本示例,它交替打印消息并等待一段时间:




#!/bin/bash
 
while true
do
  echo "Hello, World!"
  sleep 10
  echo "Goodbye!"
  sleep 5
done

这个脚本会无限循环地打印"Hello, World!",然后等待10秒,接着打印"Goodbye!",然后等待5秒。