2024-08-23

在Linux中,date 命令用于显示和设置系统时间,而 timedatectl 命令是 systemd 系统中用于查看和设置系统时间的工具。

  1. date 命令
  • 显示当前时间:



date
  • 设置系统时间:



sudo date MMDDhhmm[[CC]YY][.ss]

这里的参数意义如下:

  • MM:两位月份
  • DD:两位日期
  • hh:两位小时数(24小时制)
  • mm:两位分钟数
  • CC:两位数的世纪
  • YY:两位数的年份
  • ss:两位数的秒数

例如,要把系统时间设置为2023年4月1日12点34分,可以使用以下命令:




sudo date 04011234
  1. timedatectl 命令
  • 显示当前时间和日期信息:



timedatectl
  • 列出所有时区:



timedatectl list-timezones
  • 设置时区:



sudo timedatectl set-timezone <时区名称>

例如,要把时区设置为北京时间,可以使用以下命令:




sudo timedatectl set-timezone Asia/Shanghai
  • 开启或关闭网络时间同步:



sudo timedatectl set-ntp [true|false]

例如,要关闭网络时间同步,可以使用以下命令:




sudo timedatectl set-ntp false

注意:使用 timedatectl 命令需要管理员权限,因此在执行这些命令时可能需要使用 sudo

2024-08-23

在Linux系统中,一个进程可以处于以下七种状态之一:

  1. 运行(Running):进程正在CPU上运行。
  2. 可中断(Sleeping):进程在等待事件完成,如等待输入/输出操作或者等待某些资源。
  3. 不可中断(Uninterruptible Sleeping):类似于可中断状态,但进程不会响应异步信号。
  4. 暂停(Stopped):进程被暂停,通常是由于收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号。
  5. 僵尸(Zombie):进程已经结束,但父进程还没有读取其exit status。
  6. 新建(New):进程正在被创建,还没有到运行状态。
  7. 退出(Dead):进程已终止,但进程描述符仍存在,直到父进程读取。

可以使用ps命令查看这些状态。例如,ps -aux会显示所有进程的详细信息,其中包括进程状态。




ps -aux | grep [s]

上述命令会列出所有处于S状态(即可中断状态)的进程。

2024-08-23

要在Android平板上远程连接Ubuntu服务器进行代码开发,可以使用code-server,这是一个支持多种操作系统的Visual Studio Code服务器,可以在浏览器中提供代码编辑界面。

以下是在Ubuntu服务器上安装和配置code-server的步骤,以及如何从Android设备连接到它:

  1. 在Ubuntu服务器上安装code-server



wget -qO- https://get.code-server.dev/install.sh | sh
  1. 启动code-server



code-server
  1. 默认情况下,code-server会在443端口上运行,并要求你设置一个密码。记下提示的密码,以及服务器的公网IP地址。
  2. 在Android平板电脑上,下载并安装一个支持HTTPS的浏览器,如Google Chrome或Microsoft Edge。
  3. 在浏览器中输入服务器的公网IP地址和端口号(默认为443),例如https://your-server-ip-address:443
  4. 输入之前设定的密码进行登录。
  5. 登录后,你将看到code-server的界面,可以在Android设备上进行代码编辑。

注意:确保你的Ubuntu服务器的防火墙允许443端口的流量,并且你的Android设备与服务器之间的网络连接是稳定的。

如果你的Android平板使用的是Wi-Fi而不是移动数据,请确保Wi-Fi网络的稳定性和速度。

如果你的服务器有动态IP地址,你可能需要设置一个静态IP或使用域名,以便从Android设备上稳定地访问。

如果你的服务器安全组或防火墙设置不允许外部访问443端口,你需要修改设置以允许从你的Android设备IP地址访问。

2024-08-23



#!/bin/bash
 
# 使用 Telnet 测试 IP 和端口的通畅性
# 参数1:IP地址
# 参数2:端口号
 
IP=$1
PORT=$2
 
if [ -z "$IP" ] || [ -z "$PORT" ]; then
    echo "Usage: $0 <IP> <PORT>"
    exit 1
fi
 
echo "Testing connectivity to $IP:$PORT"
 
if telnet "$IP" "$PORT" <<< "quit" &> /dev/null; then
    echo "Connection to $IP:$PORT is successful"
else
    echo "Connection to $IP:$PORT failed"
fi
 
# 输出分隔线
echo "----------------------------------------"
 
# 使用 Telnet 测试并获取返回值
telnet_result=$(echo "quit" | telnet "$IP" "$PORT" 2>&1)
 
# 打印 telnet 命令的输出
echo "$telnet_result"
 
# 检查 telnet 是否因为失败而退出,并输出对应的错误信息
if echo "$telnet_result" | grep -q "Connection closed"; then
    echo "Telnet connection failed: Connection closed prematurely"
else
    echo "Telnet connection successful"
fi

这段代码接受两个参数:IP 地址和端口号,并使用 Telnet 测试它们的连通性。如果连接成功,它会发送 "quit" 命令并退出。脚本还演示了如何捕获和处理 telnet 命令的输出,以及如何检查连接是否因为失败而关闭。

2024-08-23

HTML5是HTML的最新版本,它为现代web应用程序提供了新的语义标签、图形、视频、音频等功能。以下是一些基本的HTML5元素和属性的示例:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>示例HTML5页面</title>
</head>
<body>
    <header>
        <h1>我的网站</h1>
    </header>
    <nav>
        <ul>
            <li><a href="#">主页</a></li>
            <li><a href="#">关于</a></li>
            <li><a href="#">联系</a></li>
        </ul>
    </nav>
    <section>
        <article>
            <header>
                <h2>文章标题</h2>
            </header>
            <p>这是一个示例文章的内容。</p>
        </article>
        <article>
            <header>
                <h2>另一个文章标题</h2>
            </header>
            <p>这是另一个示例文章的内容。</p>
        </article>
    </section>
    <aside>
        <h3>侧边栏</h3>
        <p>这里可以放置侧边栏内容。</p>
    </aside>
    <footer>
        <p>版权所有 &copy; 2023</p>
    </footer>
</body>
</html>

这个示例展示了一些常用的HTML5元素,包括<header>, <nav>, <section>, <article>, <aside>, 和 <footer>。这些语义化的标签有助于改善搜索引擎的索引和页面的可访问性。

2024-08-23

在Linux中,setsid是一个用来创建新会话的命令,并将进程的ID设置为新会话的领导进程。当setsid运行程序时,它会创建一个新的会话,并让运行的程序成为新会话和新进程组的领导进程。通常,守护进程是在后台执行的,与控制终端、登录会话和进程组分离的进程。

要创建一个守护进程,可以使用setsid命令运行你的程序。这样做可以确保程序不依赖于控制终端,并且通常会将当前工作目录更改为根目录,并关闭所有已打开的文件描述符。

下面是一个简单的示例,展示如何使用setsid来运行一个守护进程:




#!/bin/bash
 
# 守护进程的入口函数或执行的命令
DAEMON_CMD="/path/to/your/daemon_program"
 
# 创建守护进程
setsid ${DAEMON_CMD} > /dev/null 2>&1 < /dev/null &

在这个例子中,DAEMON_CMD是守护进程的命令。setsid会创建一个新的会话,并在后台运行该命令。输入输出被重定向到/dev/null,以避免在控制台上产生任何输出信息。最后的&会将进程放到后台执行。

2024-08-23



#include <linux/suspend.h>
 
// 此函数在系统进入suspend状态前被调用
void my_suspend_prepare(suspend_state_t state) {
    // 在此处添加你的准备工作代码
    printk(KERN_INFO "Prepare for system suspend...\n");
}
 
// 此函数在系统suspend后设备驱动器被恢复前被调用
void my_suspend_prepare_late(suspend_state_t state) {
    // 在此处添加你的晚期准备工作代码
    printk(KERN_INFO "Late prepare for system suspend...\n");
}
 
// 此函数在系统恢复后设备驱动器恢复后被调用
void my_resume_notify(suspend_state_t state) {
    // 在此处添加你的恢复通知代码
    printk(KERN_INFO "System resumed...\n");
}
 
// 此函数在系统suspend期间被调用,用于保存和恢复全局变量
int my_suspend_store_global_state(suspend_state_t state) {
    // 在此处添加你的全局状态保存代码
    printk(KERN_INFO "Saving global state for system suspend...\n");
    return 0; // 返回0表示成功
}
 
// 此函数用于系统恢复时恢复全局变量
void my_suspend_restore_global_state(void) {
    // 在此处添加你的全局状态恢复代码
    printk(KERN_INFO "Restoring global state after system resume...\n");
}
 
// 初始化电源管理的回调函数
void init_my_suspend_ops(struct platform_suspend_ops *ops) {
    ops->enter = my_suspend_prepare;
    ops->prepare = my_suspend_prepare_late;
    ops->finish = my_resume_notify;
    ops->store = my_suspend_store_global_state;
    ops->restore = my_suspend_restore_global_state;
}

这个代码示例展示了如何为Linux系统注册suspend和resume的回调函数。开发者可以在my_suspend_preparemy_suspend_prepare_late函数中实现设备进入suspend状态前的准备工作,在my_resume_notify函数中实现系统恢复后的通知工作。同时,my_suspend_store_global_statemy_suspend_restore_global_state函数用于保存和恢复全局状态信息。这些函数应该在设备驱动初始化时被调用,并注册到系统的suspend/resume框架中。

2024-08-23

这个错误通常表明在使用Visual Studio Code (VS Code) 进行C/C++编程时,预设的编译任务(preLaunchTask)出现了问题。"C/C++: gcc.exe 生成活动文件"是一个任务,它会在调试会话开始前用gcc编译器编译你的源代码。

解决方法:

  1. 确认你的系统上已安装GCC编译器。可以在终端中运行gcc --version来检查。
  2. 如果未安装GCC,需要先安装。在Debian/Ubuntu系统上,可以使用sudo apt-get install build-essential来安装GCC和其他编译工具。在Red Hat/CentOS上,可以使用sudo yum groupinstall 'Development Tools'
  3. 检查VS Code的tasks.json文件,确认其中的命令和参数是否正确配置。
  4. 如果GCC编译器的路径不在系统的PATH环境变量中,需要在tasks.json中指定完整路径。
  5. 确保你的源代码文件没有编译错误,并且所有必要的依赖项都已正确链接。
  6. 如果你更改了工作目录或文件名,确保launch.json文件中的相关路径也做了相应的更新。
  7. 如果问题依旧,尝试重启VS Code,或者重新生成任务配置文件。
  8. 查看VS Code的输出或终端中的错误信息,以获取更具体的问题指示,并据此进行调试。
2024-08-23

重置Linux系统的root密码通常有以下几种方法:

  1. 使用单用户模式或者救援模式:

    • 重启系统
    • 在GRUB菜单界面上选择相应的单用户模式或救援模式
    • 进入之后,可以使用passwd命令来重置root密码
  2. 使用Ubuntu/Debian系统的救援模式(如果系统支持):

    • 重启系统
    • 在系统启动时,按下Shift键进入恢复模式菜单
    • 选择“Advanced options”
    • 选择“Recovery mode”并按回车
    • 在接下来的菜单中,选择“Root”并按回车
    • 系统将以root用户身份启动,此时可以使用passwd命令来重置root密码
  3. 使用Live CD/USB:

    • 插入Linux启动盘
    • 重启系统并从启动盘启动
    • 挂载原始系统的文件系统到Live环境中
    • 使用chroot切换到原始系统环境
    • 使用passwd命令来重置root密码

以下是使用单用户模式重置root密码的示例步骤:

  1. 重启Linux系统。
  2. 在GRUB菜单界面上选择“Single-user mode”或类似的单用户模式选项。
  3. 系统启动后,会直接以root用户身份登录。
  4. 输入命令 passwd 并按回车,然后输入新的root密码并确认。
  5. 重置密码后,输入 reboot 命令来重启系统。

注意:在实际操作时,请确保您有足够的权限来重新启动系统,并在操作过程中谨慎行事,因为错误的操作可能会导致系统无法启动。

2024-08-23

要在Linux系统上离线安装Harbor镜像仓库,你需要先在有网络连接的机器上下载所需的安装包和Docker镜像,然后将它们传输到你的目标Linux机器上进行安装。以下是简化的步骤和示例代码:

  1. 在有网络的机器上下载Harbor offline installer和所需的Docker镜像。
  2. 将下载的文件通过USB驱动器或其他媒介传输到离线的Linux机器。
  3. 在离线的Linux机器上安装Docker和Harbor。

以下是示例步骤:

在有网络的机器上:




# 下载Harbor offline installer
wget https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz
 
# 下载所需的Docker镜像
docker save -o harbor.v2.0.0.tar goharbor/harbor-core:v2.0.0
docker save -o harbor-jobservice.v2.0.0.tar goharbor/harbor-jobservice:v2.0.0
docker save -o registry.v2.0.0.tar registry:2.7.1
# ... 下载其他所需的镜像 ...

将下载的harbor-offline-installer-v2.0.0.tgz和所有.tar镜像文件复制到离线Linux机器。

在离线的Linux机器上:




# 加载Docker镜像
docker load < harbor.v2.0.0.tar
docker load < harbor-jobservice.v2.0.0.tar
docker load < registry.v2.0.0.tar
# ... 加载其他所需的镜像 ...
 
# 解压Harbor安装包
tar zxvf harbor-offline-installer-v2.0.0.tgz
cd harbor
 
# 配置Harbor
cp harbor.yml.tmpl harbor.yml
# 编辑harbor.yml文件进行配置
 
# 安装Harbor
./install.sh

确保你根据你的环境修改配置文件harbor.yml。安装完成后,你应该能够在离线Linux机器上运行Harbor镜像仓库。

请注意,上述步骤中的Harbor版本(v2.0.0)和Docker镜像版本可能会变化,根据你选择的Harbor版本进行相应的更新。同时,确保所有必要的Docker镜像都已经下载和加载,以便Harbor能够正常运行。