2024-08-23

在Linux系统中安装Nginx并启动它的步骤通常如下:

  1. 更新软件包索引:



sudo apt update
  1. 安装Nginx:



sudo apt install nginx
  1. 启动Nginx服务:



sudo systemctl start nginx
  1. (可选)设置Nginx开机自启:



sudo systemctl enable nginx
  1. 检查Nginx服务状态:



sudo systemctl status nginx
  1. (可选)通过浏览器访问Nginx默认页面,在地址栏输入服务器的IP地址。

请注意,上述命令适用于基于Debian的系统(如Ubuntu)。对于基于RPM的系统(如CentOS),你需要使用yumdnf来安装软件包,并使用systemctl来管理服务。

2024-08-23

为了实现固定公网地址远程SSH连接Linux Deepin系统,你需要执行以下步骤:

  1. 确保你的Deepin系统安装了SSH服务。
  2. 配置你的路由器或防火墙允许从你的公网IP地址到你的Deepin系统的SSH端口(默认为22)的流量。
  3. 确认你的Deepin系统的网络设置允许接收外部连接。
  4. 如果你有动态公网IP地址,你可能需要一个动态DNS服务来始终指向你的最新公网IP地址。

以下是一个简单的指南和示例配置命令,用于确保SSH服务在Deepin系统上运行并允许远程连接:

  1. 安装SSH服务(如果尚未安装):

    
    
    
    sudo apt-get update
    sudo apt-get install openssh-server
  2. 确保SSH服务正在运行:

    
    
    
    sudo systemctl status ssh
  3. 配置防火墙允许SSH连接:

    
    
    
    sudo ufw allow ssh
  4. 如果你有动态IP,设置动态DNS。例如,使用ddclient更新DNS记录。
  5. 使用SSH客户端从任何支持SSH的设备连接到你的Deepin系统:

    
    
    
    ssh [username]@[your_dynamic_domain_or_static_IP]

确保替换[username]为你的Deepin系统的用户名,[your_dynamic_domain_or_static_IP]为你的动态DNS域名或静态公网IP地址。如果你有静态公网IP,直接使用IP地址进行SSH连接。

2024-08-23

在Ubuntu环境下部署SVN服务并实现公网访问,可以通过以下步骤进行:

  1. 安装SVN服务器:



sudo apt update
sudo apt install subversion
  1. 创建仓库:



sudo mkdir /var/svn
sudo svnadmin create /var/svn/my_repository
  1. 配置SVN权限:

    编辑 /var/svn/my_repository/conf/svnserve.conf 文件,添加:




[general]
anon-access = none
auth-access = write
password-db = passwd

同时编辑 /var/svn/my_repository/conf/passwd 文件,添加用户和密码:




[users]
user1 = password1
user2 = password2
  1. 设置SVN自启动(可选):



sudo touch /etc/systemd/system/svnserve.service
sudo systemctl daemon-reload
sudo systemctl enable svnserve
  1. 启动SVN服务:



sudo systemctl start svnserve
  1. 内网穿透:

    使用 frpngrok 等内网穿透工具,将SVN服务的端口(默认为3690)映射到公网。

以下是使用 frp 的示例配置:

  1. 下载并解压 frp:



wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -zxvf frp_0.37.1_linux_amd64.tar.gz
  1. 编辑 frp 的配置文件 frps.ini,例如:



[common]
bind_port = 7000
  1. 启动 frp 服务端:



./frps -c ./frps.ini
  1. 编辑 frp 的客户端配置文件 frpc.ini,例如:



[common]
server_addr = <your_server_ip>
server_port = 7000
 
[svn_service]
type = tcp
local_ip = 127.0.0.1
local_port = 3690
remote_port = 4000
  1. 启动 frp 客户端:



./frpc -c ./frpc.ini

现在,你可以通过 http://<your_server_ip>:4000http://<frp_domain>:4000(如果使用了 frp 的域名功能)来访问你的SVN仓库,从公网任何地方都可以进行操作。

注意:确保你的服务器防火墙和云服务提供商的安全组设置允许访问对应的端口。

2024-08-23

解释:

在Linux系统中,使用su命令尝试切换到root用户时出现“Authentication failure”提示,意味着输入的用户密码不正确。

解决方法:

  1. 确认你正在使用的是root用户的密码,而不是其他用户的。
  2. 如果你已确认密码正确,尝试重置root用户密码。

以下是重置root密码的简要步骤:

  1. 重启系统。
  2. 在启动时进入单用户模式(单用户模式的方法取决于具体的Linux发行版,常见的有在GRUB启动菜单选择“single”或“rescue”)。
  3. 在单用户模式下,你可以用root身份登录,然后使用passwd命令修改root密码。
  4. 重新启动系统,使用新密码尝试su到root用户。

注意:如果你不熟悉如何进入单用户模式,或者没有物理访问权限,你可能需要联系系统管理员来帮助你重置密码。如果是远程连接,可能需要使用SSH协议并且知道服务器的管理员密码。

2024-08-23

在 Linux 系统中,你可以使用 ipifconfig 命令来查找网络接口的 MAC 地址。

  1. 使用 ip 命令:



ip link

在输出中,你可以看到每个网络接口的信息,包括 MAC 地址,它以 link/ether 开头。

  1. 使用 ifconfig 命令(如果已安装):



ifconfig -a

在输出中,每个网络接口的信息将包括 MAC 地址,标记为 HWaddr

  1. 查找特定接口的 MAC 地址,假设接口名为 eth0



ip link show eth0

或者




ifconfig eth0

在这些命令的输出中,你可以找到接口 eth0 的 MAC 地址。

2024-08-23

在Linux中,文件系统通常是指磁盘上的存储结构,它负责存储和组织文件数据。Linux文件系统包括多种类型,如ext4、XFS、NFS等。

硬链接(hard link)是对文件的引用,它允许一个文件有多个名字。删除一个硬链接的文件不会删除实际的数据,只会减少引用计数。

软链接(symbolic link或soft link)是一个指向另一个文件的指针。删除软链接的文件不会影响被指向的文件,但如果删除被指向的文件,软链接将变得不可用。

示例代码:

创建硬链接:




ln filename linkname

创建软链接:




ln -s filename linkname

硬链接和软链接的主要区别在于它们是否独立于原始文件存在:

  • 硬链接依赖于原始文件,如果原始文件被删除,硬链接变得不可用。
  • 软链接不依赖于原始文件,它仅仅是原始文件的引用。

硬链接和软链接的创建对原始文件没有影响,不会导致文件内容的额外副本。不过,硬链接不能用于链接目录,因为硬链接不支持跨分区操作。

2024-08-23

在Ubuntu环境中安装配置Jenkins的步骤如下:

  1. 更新系统包索引:



sudo apt-update
  1. 安装Java(如果系统中还没有安装Java):



sudo apt install default-jdk
  1. 添加Jenkins的官方仓库:



wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
  1. 再次更新包索引:



sudo apt-get update
  1. 安装Jenkins:



sudo apt-get install jenkins
  1. 启动并启用Jenkins服务:



sudo systemctl start jenkins
sudo systemctl enable jenkins
  1. 访问Jenkins:
  • 在浏览器中访问 http://your_server_ip:8080
  • 你将被要求输入管理员密码,这可以在以下文件中找到:

    
    
    
    sudo cat /var/lib/jenkins/secrets/initialAdminPassword

    复制并粘贴密码到浏览器中继续。

  1. 完成安装和配置。

注意:确保你的Ubuntu服务器的防火墙设置允许访问8080端口。如果你使用的是云服务,你可能需要在云服务的安全设置中开放该端口。

2024-08-23

在Linux中,我们可以使用fork()来创建一个新的进程,exit()来结束进程,wait()waitpid()来等待一个子进程的结束。

  1. 创建一个新的进程:



#include <stdio.h>
#include <unistd.h>
 
int main() {
    pid_t pid = fork();
 
    if (pid == -1) {
        // 创建失败
        perror("fork failed");
        return 1;
    } else if (pid == 0) {
        // 子进程中
        printf("子进程PID: %d\n", getpid());
    } else {
        // 父进程中
        printf("父进程PID: %d, 子进程PID: %d\n", getpid(), pid);
    }
 
    return 0;
}
  1. 结束进程:



#include <stdio.h>
#include <stdlib.h>
 
int main() {
    printf("退出前的输出\n");
    exit(EXIT_SUCCESS); // 正常退出
    // 或者使用 exit(EXIT_FAILURE); 非正常退出
 
    printf("这行代码不会被执行\n"); // 这行代码不会被执行
    return 0;
}
  1. 等待子进程结束:



#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
 
int main() {
    pid_t pid = fork();
 
    if (pid == -1) {
        perror("fork failed");
        exit(EXIT_FAILURE);
    }
 
    if (pid == 0) {
        // 子进程中
        printf("子进程PID: %d, 正在执行\n", getpid());
        sleep(5); // 模拟执行时间
        exit(EXIT_SUCCESS);
    } else {
        // 父进程中
        int status;
        pid_t wpid = wait(&status); // 等待子进程结束
 
        if (wpid == -1) {
            perror("wait failed");
        } else {
            printf("子进程PID: %d 已经结束\n", wpid);
        }
    }
 
    return 0;
}

以上代码展示了如何在Linux中创建一个新的进程,如何结束一个进程,以及如何等待一个子进程的结束。在实际应用中,这些基本的进程控制方法是非常有用的。

2024-08-23

iostat是一个Linux系统中用于监视系统输入/输出设备负载的工具,它可以展示CPU统计信息和所有分区的磁盘I/O统计信息。

基本语法:




iostat [选项] [时间间隔 [次数]]

常用选项:

  • -c:显示CPU使用情况
  • -d:显示磁盘使用情况
  • -N:显示磁盘阵列(partition)信息
  • -n:显示NFS使用信息
  • -k:以KB为单位显示
  • -m:以MB为单位显示
  • -t:在每行输出的开始添加时间戳
  • -V:显示版本信息
  • -x:显示扩展的磁盘和分区信息

示例:

  1. 显示所有磁盘分区的I/O统计信息:



iostat
  1. 每2秒更新一次,总共更新5次,显示所有CPU和磁盘统计信息:



iostat 2 5 -c -d
  1. 显示所有磁盘分区的扩展统计信息,以MB为单位,包括NFS使用情况:



iostat -x -m -n
  1. 显示所有磁盘分区的统计信息,并在每行输出前添加时间戳:



iostat -t
  1. 显示版本信息:



iostat -V

这些示例提供了iostat命令的基本使用方法,可以根据实际需求进行选项的组合和参数的调整。

2024-08-23

在Linux系统中,可以使用一些特定的命令来控制进程的运行,如pskillpgreptophtopjobsbgfg等。以下是一些常用的进程控制命令的简单示例:

  1. ps:查看当前shell的进程状态。



ps
  1. ps -aux:查看系统中所有进程的详细状态。



ps -aux
  1. kill:发送信号到指定PID的进程。



kill 1234
  1. pgrep:查找符合条件的进程。



pgrep -u username -l "process_name"
  1. tophtop:实时监视系统进程状态。



top




htop
  1. jobs:查看当前shell下的作业。



jobs
  1. bg:将一个挂起的作业放到后台运行。



bg %1
  1. fg:将后台作业调至前台并继续运行。



fg %1

这些命令可以帮助管理和控制Linux系统中的进程。在使用时,可以通过man 命令名来获取更详细的帮助信息。