Linux常用指令

指令学习

终端命令

ubuntu如何关闭80端口的占用

要关闭 Ubuntu 中 80 端口的占用,有几种方法可供选择:

  1. 停止占用端口的服务:找到当前占用 80 端口的服务,然后停止该服务。可以使用以下命令获取当前占用 80 端口的服务的 PID:

    sudo lsof -i :80

    然后,使用 kill 命令停止该服务:

    sudo kill <PID>

    如果该服务无法正常停止,可以使用 kill -9 命令强制停止该服务。

  2. 配置 Nginx 或 Apache 监听其他端口:如果您的 Ubuntu 机器上运行着 Nginx 或 Apache 等 Web 服务器,并且它们正在监听 80 端口,那么您可以修改它们的配置,让它们监听其他端口,比如 8080 或 8000 等未占用的端口。

    在 Nginx 中,可以修改 /etc/nginx/sites-available/default 文件中的 listen 指令,如下所示:

    server {
        listen 8080;
        ...
    }

    在 Apache 中,可以修改 /etc/apache2/ports.conf 文件中的 Listen 指令,如下所示:

    Listen 8080
  3. 防火墙规则:如果您只想暂时禁止对 80 端口的访问,可以使用防火墙软件(如 ufw)的规则来限制对该端口的访问。可以使用以下命令禁止对 80 端口的访问:

    sudo ufw deny 80/tcp

    要恢复对该端口的访问,可以使用以下命令:

    sudo ufw delete deny 80/tcp

请根据您的需求选择适合您的方法。

nohub后台操作进程

挂起进程

使用 nohup 命令挂起进程的操作步骤如下:

  1. 打开终端窗口。

  2. 在终端中输入以下命令:

nohup command > output.log 2>&1 &

其中 command 表示您要在后台运行的命令,output.log 表示输出的日志文件。

  1. 执行该命令后,command 进程将在后台运行,不会受到 SIGHUP 信号的影响。

需要注意的是,使用 nohup 命令挂起进程时,需要确保您有足够的权限运行该命令。如果您尝试运行某个需要管理员权限的命令,则需要在命令前加上 sudo

查看挂起进程

如果您想要停止某个通过 nohup 命令挂起的进程,可以使用 ps -ef | grep command 命令来查找该进程的进程 ID(PID)

停止进程

使用 kill PID 命令来停止进程。

查看某个网络端口被进程占用情况

在 CentOS 系统中,可以使用 lsof 命令来查看某个端口的占用情况。lsof 命令是一个用于列出当前系统打开的文件、网络连接等信息的工具,可以通过以下步骤查看某个端口的占用情况:

  1. 打开终端,以超级用户身份执行以下命令,以查询 TCP 端口:

    sudo lsof -i :端口号

    其中,需要将 端口号 替换为您想要查询的端口号。例如,如果您想要查询 80 端口的占用情况,可以执行以下命令:

    sudo lsof -i :80
  2. 执行命令后,lsof 命令会列出所有正在使用该端口的系统进程,并显示相关信息,包括进程 ID、进程名称、协议类型、连接状态、进程所在用户等等。

    注意:如果您没有指定端口号,则 lsof 命令会列出当前系统打开的所有网络端口信息,因此您应该始终使用端口号来确定要查询的端口。

通过这种方法,您可以清楚地知道哪个进程正在使用某个端口,从而可以根据需要进行相应的调整。

文件复制、删除操作

删除文件

您可以使用以下命令来批量删除文件:

rm 文件名

rm /path/to/directory/*pattern*

其中,/path/to/directory/ 是你想要删除文件的目录的路径,而 *pattern* 是你想要匹配的文件名或者通配符模式。

例如,如果你想批量删除 /home/user/projects/ 目录中以 .bak 结尾的所有文件,可以执行以下命令:

rm /home/user/projects/*.bak

请注意,这个命令是不可逆的,因此请在执行之前一定要仔细确认您要删除的文件,以免误删重要文件。

删除文件夹

您可以使用 rm 命令删除整个文件夹。以下是删除文件夹的基本语法:

rm -r /path/to/directory

其中:

  • -r 选项告诉 rm 命令使用递归方式删除目录及其中的所有文件和子目录。

  • /path/to/directory 是要删除的目录的路径。

例如,如果您要删除名为 mydirectory 的目录,则可以使用以下命令:

rm -r mydirectory

请注意,rm 命令将直接删除目录及其中的所有文件和子目录,而不会显示任何警告或确认消息。因此,请确保在执行此命令之前,您已经仔细检查了要删除的目录,并备份了所有重要数据。

复制文件

您可以使用 cp 命令来复制文件。以下是复制文件的基本语法:

cp /path/to/source /path/to/destination

其中:

  • /path/to/source 表示源文件的路径

  • /path/to/destination 表示目标文件的路径

例如,如果您想要将 /home/user/documents/file.txt 文件拷贝到 /mnt/backup/file.txt 文件中,可以执行以下命令:

cp /home/user/documents/file.txt /mnt/backup/file.txt

请注意,如果目标文件已经存在,则源文件将复制到该文件中并覆盖现有内容。如果目标文件不存在,则目标文件将被创建,并将源文件复制到该文件中。

复制文件夹

这个错误通常是因为在使用 cp 命令复制目录时没有指定 -r 选项,将目录视为普通文件进行复制,因此出现了错误。

解决方法是在 cp 命令后面添加 -r 选项,如下所示:

cp -r /path/to/source/directory /path/to/destination/directory

其中:

  • -r 选项告诉 cp 命令使用递归方式复制目录及其中的所有文件和子目录。

  • /path/to/source/directory 是要复制的源目录的路径。

  • /path/to/destination/directory 是要将源目录复制到的目标目录的路径。

例如,如果您要将名为 mydirectory 的目录复制到 backup 目录中,则可以使用以下命令:

cp -r mydirectory backup/

请注意,在目标路径中不包括源目录名称。这是因为 cp 命令会创建一个名为 mydirectory 的子目录,并将源目录的内容复制到其中。如果您希望目标目录具有不同的名称,请在目标路径中指定所需的名称。

路由转发

设置路由转发

好的,您可以使用以下命令来实现类似的规则:

sudo iptables-nft -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

这个命令将创建一个名为 PREROUTING 的 NAT 表,并将一个新规则添加到该表中。该规则将拦截端口为80的TCP流量,并将其重定向到本地端口8080。

要将设置保存到 /etc/iptables/rules.v4 文件中,请使用以下命令:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

这将使用 iptables-save 命令将规则保存到 /etc/iptables/rules.v4 文件中。请注意,这将使用 root 权限保存规则,因此您需要使用 sudo 或 root 访问该命令。

请确保在对 iptables 规则进行任何更改之前备份您的当前规则集,以防止错误地更改防火墙规则并损害服务器安全。

要查看您的 iptables 端口转发规则

要查看您的 iptables 端口转发规则,请使用以下命令:

sudo iptables-nft -t nat -L

这将显示您当前的 NAT 表中的所有规则,包括您创建的端口转发规则。在这里,您可以查看哪些端口已经被转发,哪些端口没有被转发。

如果您想更详细的了解某个端口的转发情况,您可以使用以下命令来查看该端口上的规则:

sudo iptables-nft -t nat -L --line-numbers | grep <port_number>

请将 <port_number> 替换为您想要查找的端口号。您将在结果中看到与该端口相关的规则,包括匹配该规则的数据包数量以及该规则的动作(例如目标 IP 或端口)。

请注意,在 Ubuntu 22.04 中,您应该使用 iptables-nft 命令而不是 iptables 命令。

删除转发规则

要删除您的 iptables 转发规则,请使用以下命令:

sudo iptables-nft -t nat -D PREROUTING <rule_number>

请将 <rule_number> 替换为您想要删除的规则的数字编号。您可以在使用 sudo iptables-nft -t nat -L --line-numbers 命令时,查看每个规则的数字编号。

这个命令将从 PREROUTING(转发)表中删除您指定的规则。

值得注意的是,在删除规则之前,请务必仔细检查要删除的规则,以确保您不会意外地删除错误的规则并导致安全问题。

另外,如果您不想手动删除任何规则,也可以使用以下命令清除所有规则:

sudo iptables-nft -F

这将删除所有的 iptables 规则,包括您通过 iptables-nft -t nat -A 命令添加的规则。

设置防火墙访问端口

注意:转发和被转发的端口都要打开

如果您在 Ubuntu 22.04 系统上使用微信公众号请求 80 端口时超时,但请求 443 端口正常,则可能是由于您的防火墙阻止了对 80 端口的访问。以下是一些解决方案:

  1. 检查防火墙是否允许对端口的访问

可以使用以下命令来检查防火墙是否阻止了 80 端口的连接:

sudo ufw status

如果您看到类似于“80/tcp DENY”的输出,则防火墙阻止了对 80 端口的连接。要允许对 80 端口的访问,请执行以下命令:

sudo ufw allow 80/tcp
  1. 检查代理服务器是否正确配置

如果您使用代理服务器,则可能需要确保代理服务器已正确配置。请使用以下命令检查代理服务器的设置:

sudo nano /etc/environment

检查 http_proxyhttps_proxy 是否设置为您的代理服务器的地址和端口。例如,如果您的代理服务器地址为 proxy.example.com,端口号为 8080,则 http_proxyhttps_proxy 的设置如下:

http_proxy="http://proxy.example.com:8080/"
https_proxy="https://proxy.example.com:8080/"

请确保您的代理服务器已正确配置。

  1. 检查 DNS 配置是否正确

如果您的 DNS 设置不正确,则可能会导致连接超时。请使用以下命令检查您的 DNS 配置:

sudo nano /etc/resolv.conf

确保您的 DNS 服务器地址正确,并且每个服务器的地址在单独的一行上。

如果您遇到其他连接问题,请检查您的网络连接是否正常,并确保您的系统已更新到最新版本。

重启网络

根据您的输出,在您的系统中没有安装 NetworkManager。

请尝试通过以下命令在您的 Ubuntu 22.04 系统上安装 NetworkManager:

sudo apt update
sudo apt install network-manager

安装完成后,您应该可以使用以下命令重启 NetworkManager,并使您的 iptables 规则生效:

sudo systemctl restart NetworkManager

请记得谨慎操作,以避免意外影响系统。

ubuntu第一次如何设置root用户密码

在Ubuntu系统中,默认情况下是没有开启root用户的,可以使用sudo命令来代替root用户执行需要管理员权限的操作。但是如果您需要开启root用户并设置密码,可以按照以下步骤操作:

  1. 打开终端,输入以下命令切换到root用户:

sudo -i
  1. 输入以下命令设置root用户密码:

passwd
  1. 系统会提示您输入新的密码,输入两次即可。

  2. 设置完成后,可以使用以下命令退出root用户:

exit

注意:为了系统的安全性,建议在完成需要使用root权限的操作后,及时退出root用户。

vim编辑器

Vim 是一款功能强大的文本编辑器,常用于 Linux 系统的文件编辑。以下是 Vim 的基本编辑指令:

  1. i:进入插入模式,可以在光标所在位置插入文本。

  2. Esc:退出插入模式,回到命令模式。

  3. :w:将文件保存。

  4. :q:退出 Vim 编辑器。

  5. :wq:保存并退出 Vim 编辑器。

  6. u:撤销上一步操作。

  7. Ctrl+r:重做上一步被撤销的操作。

  8. dd:删除光标所在行。

  9. yy:复制光标所在行。

  10. p:粘贴复制的行或内容。

  11. :set number:设置显示行号。

  12. :%s/old/new/g:将文件中所有的 "old" 字符串替换为 "new" 字符串。

以上是 Vim 常用的基本编辑指令,可以帮助您快速熟悉 Vim 编辑器的使用。当然,Vim 编辑器还有更多的高级功能和指令,您可以通过网上的教程或手册来深入了解。

Vim实现多行复制

在 vim 中实现多行复制有以下两种常用方法:

  1. 使用 visual 命令选择多行,然后使用 y 命令复制:

    1. 在普通模式下,将光标移动到想要复制的第一行,并按下 V 键进入 visual 模式。

    2. 通过上下左右箭头键或 h/j/k/l 键选择要复制的多行文本区域。

    3. 按下 y 键将所选文本复制到剪贴板。

    4. 将光标移动到需要粘贴的位置,按下 p 键即可粘贴。

    例如,要复制 5 行文本,我们可以按下 V 进入 visual 模式,再按下 j 4 次选择 5 行文本,最后按下 y 复制。然后将光标移动到需要粘贴的位置,按下 p 粘贴。

  2. 输入 :x,y y 命令复制多行:

    1. 在普通模式下,将光标移到要复制的第一行。

    2. 输入 : 进入命令模式。

    3. 输入 x,y y 命令,其中 xy 分别表示要复制的多行的起始行和结束行。

    4. 将光标移动到需要粘贴的位置,按下 p 粘贴。

    例如,要复制第 5 行到第 10 行的文本,我们可以在普通模式下将光标移动到第 5 行,然后输入 :5,10 y 命令。然后将光标移动到需要粘贴的位置,按下 p 粘贴。

以上两种方法都可以实现多行复制,具体使用哪种方法取决于个人喜好和场景需求。

更改文件夹所有者

背景:xftp无法操作某个文件夹,因为xftp无法root用户登录

ubuntu如何把某个文件夹的所有者从root改为用户ubuntu

我登录的用户名是ubuntu

在 Ubuntu 中,您可以使用 chown 命令来更改文件夹的所有者。以下是更改文件夹所有者的正确指令:

sudo chown -R ubuntu: /path/to/folder
  • sudo:执行此命令需要管理员权限。因此,您需要使用 sudo 命令来允许此操作;

  • chown:该命令表示更改所有者;

  • -R:此选项将使命令递归地更改文件夹及其子文件夹和文件的所有者;

  • ubuntu:此处为您要更改的新用户的用户名;

  • /path/to/folder:要更改所有者的文件夹路径。

请注意,使用 sudo 会要求您输入可以允许该操作的管理员密码。此外,假设您希望将文件夹及其子文件夹和文件的所有者全部更改为 ubuntu 用户。如果您正确指定了文件夹路径,则可以使用上述命令更改文件夹所有者。

Docker

拉取并运行项目

docker pull yidadaa/chatgpt-next-web

    docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e CODE="your-password" \
   yidadaa/chatgpt-next-web

要运行一个 Docker 镜像,你可以使用 docker run 命令。这个命令会从 Docker Hub 或者本地的 Docker 镜像仓库中拉取指定的镜像,并在容器中运行它。

以下是一个基本的 docker run 命令的示例:

docker run <image_name>

例如,要运行 Ubuntu 的最新版本,你可以运行以下命令:

docker run ubuntu

如果你希望在容器中执行特定的命令,你可以将这些命令放在 docker run 命令的末尾。例如,要在 Ubuntu 容器中运行 echo 命令并输出 "Hello, world!",你可以运行以下命令:

docker run ubuntu echo "Hello, world!"

注意,在第一次运行一个镜像时,Docker 会自动从 Docker Hub 中下载该镜像。这可能需要一些时间,具体取决于你的互联网连接速度以及镜像大小。

问题解决记录

路由转发

问题描述

执行第二个命令之后报错

说是目录和文件不存在

按照其提示重新操作还是不行

然后就去问ChatGPT

Failed to restart iptables.service: Unit iptables.service not found.

得到回复:

如果您正在使用Systemd作为init系统,则需要使用sudo systemctl命令来管理init服务,而不是直接用/sbin/service命令。

因此,在Systemd中,如果您要重新启动iptables服务,请使用以下命令:

sudo systemctl restart iptables.service

如果执行上述命令时,您遇到了“The unit iptables.service could not be found”错误,则表示您的系统上没有名为iptables.service的Systemd服务单元。如果您的系统没有iptables,则iptables服务单元是不会存在的。

在某些系统中,特别是使用firewalld的系统中,iptables服务可能不会被默认安装或启用。如果您想完全禁用iptables并使用firewalld,则可以使用以下命令:

sudo systemctl stop iptables.service
sudo systemctl disable iptables.service

这将停止iptables服务并禁用它的启动。

弄了之后还是不行,还是报错,接着问

Failed to start iptables.service: Unit iptables.service not found.

这里注意了,因为gpt能够联系上下文,两次回复不一样,这也是能解决问题的关键所在之一

如果在使用 sudo systemctl start iptables.service 命令时出现“Unit iptables.service not found”错误,则表示您的系统没有安装 iptables 服务。在许多Linux发行版中,iptables默认已安装并启用,但某些操作系统可能会使用其他防火墙软件或直接禁用 iptables。

如果您想使用 iptables 服务,请先安装该软件包。在不同的 Linux 发行版中,安装 iptables 的方法可能不同,以下是一些常见的例子:

Debian / Ubuntu 系统:

sudo apt-get update
sudo apt-get install iptables

CentOS / Red Hat 系统:

sudo yum update
sudo yum install iptables

安装完成后,您可以再次尝试使用 sudo systemctl start iptables.service 命令启动 iptables 服务。如果您需要让 iptables 服务在系统启动时自动启动,请使用 sudo systemctl enable iptables.service 命令。

这里可以看去,问题的逻辑,有的话就运行,运行不起来表明没有再安装

关键点:要尽可能详细,要包含上下文地去问ChatGPT问题

安装好了,可是还是没有Unit的错误,系统是ubuntu22.4

回答

好的,您可以使用以下命令来实现类似的规则:

sudo iptables-nft -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

这个命令将创建一个名为 PREROUTING 的 NAT 表,并将一个新规则添加到该表中。该规则将拦截端口为80的TCP流量,并将其重定向到本地端口8080。

要将设置保存到 /etc/iptables/rules.v4 文件中,请使用以下命令:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

这将使用 iptables-save 命令将规则保存到 /etc/iptables/rules.v4 文件中。请注意,这将使用 root 权限保存规则,因此您需要使用 sudo 或 root 访问该命令。

请确保在对 iptables 规则进行任何更改之前备份您的当前规则集,以防止错误地更改防火墙规则并损害服务器安全。

发散思维,继续问

如何查看端口转发情况

得到

要查看您的 iptables 端口转发规则,请使用以下命令:

sudo iptables-nft -t nat -L

这将显示您当前的 NAT 表中的所有规则,包括您创建的端口转发规则。在这里,您可以查看哪些端口已经被转发,哪些端口没有被转发。

如果您想更详细的了解某个端口的转发情况,您可以使用以下命令来查看该端口上的规则:

sudo iptables-nft -t nat -L --line-numbers | grep <port_number>

请将 <port_number> 替换为您想要查找的端口号。您将在结果中看到与该端口相关的规则,包括匹配该规则的数据包数量以及该规则的动作(例如目标 IP 或端口)。

请注意,在 Ubuntu 22.04 中,您应该使用 iptables-nft 命令而不是 iptables 命令。

这下看到了转发规则了,确实已经设置好了,不过为啥还是不行呢

就在想是不是云服务器连不上啊

结果发现微信公众号设置为https(这里的意外发现是这里这么设置就会默认转发到443接口),这是行的通的

开始追问

微信公众号请求80端口超时,443端口正常,ubuntu22.04系统,怎么处理

回复

如果您在 Ubuntu 22.04 系统上使用微信公众号请求 80 端口时超时,但请求 443 端口正常,则可能是由于您的防火墙阻止了对 80 端口的访问。以下是一些解决方案:

  1. 检查防火墙是否允许对端口的访问

可以使用以下命令来检查防火墙是否阻止了 80 端口的连接:

sudo ufw status

如果您看到类似于“80/tcp DENY”的输出,则防火墙阻止了对 80 端口的连接。要允许对 80 端口的访问,请执行以下命令:

sudo ufw allow 80/tcp
  1. 检查代理服务器是否正确配置

如果您使用代理服务器,则可能需要确保代理服务器已正确配置。请使用以下命令检查代理服务器的设置:

sudo nano /etc/environment

检查 http_proxyhttps_proxy 是否设置为您的代理服务器的地址和端口。例如,如果您的代理服务器地址为 proxy.example.com,端口号为 8080,则 http_proxyhttps_proxy 的设置如下:

http_proxy="http://proxy.example.com:8080/"
https_proxy="https://proxy.example.com:8080/"

请确保您的代理服务器已正确配置。

  1. 检查 DNS 配置是否正确

如果您的 DNS 设置不正确,则可能会导致连接超时。请使用以下命令检查您的 DNS 配置:

sudo nano /etc/resolv.conf

确保您的 DNS 服务器地址正确,并且每个服务器的地址在单独的一行上。

如果您遇到其他连接问题,请检查您的网络连接是否正常,并确保您的系统已更新到最新版本。

发现80端口是allow没啥问题

又想到转发不是涉及两个接口吗,于是打开转发到的接口,问题解决啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值