Linux命令

2024-01-12

查看版本信息

系统的版本信息和内核版本信息

1
cat /proc/version

CentOS的版本信息

1
cat /etc/centos-release
1
cat /etc/redhat-release

查看mysql版本

1
mysql --version

查看docker版本

1
docker -v

查看Nginx版本

1
nginx -v

修改宝塔面板端口的问题及解决

https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=123580

linux 安装 golang

参考:https://zhuanlan.zhihu.com/p/399172488

查看端口占用

所有端口占用情况

1
netstat -nultp

某个端口占用情况

1
netstat -anp |grep 端口号

查看防火墙开放窗口

参考:linux查看防火墙,开放端口

1、查看防火墙状态

1
systemctl status firewalld

2、如果不是显示active状态,需要打开防火墙

1
systemctl start firewalld

3、查看所有已开放的临时端口(默认为空)

1
firewall-cmd --list-ports

4、 查看所有永久开放的端口(默认为空)

1
firewall-cmd --list-ports --permanent

5、 添加临时开放端口(例如:比如我修改ssh远程连接端口是223,则需要开放这个端口)

1
firewall-cmd --add-port=223/tcp

6、 添加永久开放的端口(例如:223端口)

1
firewall-cmd --add-port=223/tcp --permanent

7、关闭临时端口

1
firewall-cmd --remove-port=80/tcp

8、 关闭永久端口

1
firewall-cmd --remove-port=80/tcp --permanent

9、 配置结束后需要输入重载命令并重启防火墙以生效配置

1
2
firewall-cmd --reload
systemctl restart firewalld

卸载MySQL

参考:https://blog.csdn.net/lljddddd/article/details/127846356

创建mysql实例

1
docker run -d -p 3306:3306 --privileged=true -v /hollis/mysql/log:/var/log/mysql -v /hollis/mysql/data:/var/lib/mysql -v /hollis/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=phl854828  --name mysql mysql:8.0

可以添加--restart=always参数,使docker重启时,自动启动该容器。

GO打包到linux服务器运行

参考:https://www.cnblogs.com/minch/p/17302178.html

获取文件夹大小

在Linux中,可以使用du命令来获取某个文件夹的大小。

如果要查看当前目录下某个文件夹(比如名为folder)的大小,可以运行以下命令:

1
du -sh folder/

其中,-s参数表示只显示总计大小,而不列出每个子目录的详细信息;-h参数则将结果转换成人类可读的格式,以便更容易理解。

如果想要遍历所有子目录并统计整个文件夹及其内部文件的大小,可以省略-s参数:

1
du -h folder/

进程后台运行

参考:Linux系统下如何保持进程在SSH客户端断开后仍继续运行?

后台运行go语言编译好的可执行文件:

1
sudo nohup /myproject/code/golang/Crawling_Course_Update/dmz/bin/dmz > nohup_dmz.log 2>&1 &

会得到一个进程 id:

1
[1] 19921

查看 dmz 相关活动进程:

1
ps -ef | grep dmz

这种方式,在重启服务器之后,该后台进程会停止运行,如果想要开机自启动dmz,则需要使用下面的方法。

开机自启动某程序

在Linux系统中,您可以使用系统的启动脚本或服务管理工具来配置在重启后自动运行程序。以下是一种可能的方法:

方式1:使用 Systemd(推荐)

  1. 创建一个Systemd服务单元文件。使用文本编辑器打开一个新文件:

    1
    
    sudo vim /etc/systemd/system/dmz.service
  2. 将以下内容添加到文件中:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    [Unit]
    Description=DMZ Program
    After=network.target
    
    [Service]
    ExecStart=/myproject/code/golang/Crawling_Course_Update/dmz/bin/dmz
    Restart=always
    RestartSec=3
    StandardOutput=append:/myproject/code/golang/Crawling_Course_Update/dmz/files/log.start.log
    StandardError=append:/myproject/code/golang/Crawling_Course_Update/dmz/files/log.start.log
    SyslogIdentifier=dmz
    
    [Install]
    WantedBy=default.target

    请确保将 ExecStart 的路径设置为您的 dmz 程序的实际路径。

    解释: 这是一个Systemd服务单元文件中各个部分的配置解释:

    1. [Unit] 部分:

      • Description: 描述服务的文字说明。在这里,描述为 “DMZ Program”,是对服务的简要描述。
      • After: 指定服务启动之后应该在哪些目标(target)之后启动。在这里,服务将在 network.target 启动后启动,表示在网络服务启动后再启动此服务。
    2. [Service] 部分:

      • ExecStart: 指定服务启动时执行的命令或脚本。在这里,/myproject/code/golang/Crawling_Course_Update/dmz/bin/dmz 是要执行的程序的路径。
      • Restart: 指定服务在发生错误或异常退出后是否应该重新启动。在这里,设置为 always 表示始终重新启动。
      • RestartSec: 指定重新启动之间的延迟时间。在这里,设置为 3 秒。
      • StandardOutput: 指定标准输出的目标。在这里,设置为 append:/myproject/code/golang/Crawling_Course_Update/dmz/files/log.start.log 表示将标准输出追加到指定的文件。
      • StandardError: 指定标准错误的目标。同样,设置为 append:/myproject/code/golang/Crawling_Course_Update/dmz/files/log.start.log 表示将标准错误追加到指定的文件。
      • SyslogIdentifier: 指定服务在系统日志中的标识符。在这里,设置为 dmz
    3. [Install] 部分:

      • WantedBy: 指定服务所属的目标。在这里,设置为 default.target,表示服务是默认目标的一部分。

    这些配置项定义了服务的各个方面,包括其描述、启动命令、重新启动策略等。这个服务单元文件告诉Systemd如何管理和运行您的 dmz 程序。

  3. 保存并关闭文件。

  4. 启动并激活服务:

    1
    2
    
    sudo systemctl start dmz
    sudo systemctl enable dmz

    这将启动服务并设置在系统启动时自动启用。

  5. 检查服务状态:

    1
    
    sudo systemctl status dmz

    如果一切正常,您应该看到 dmz 服务正在运行。

方式2:使用启动脚本

/etc/rc.local 文件中添加以下行:

1
2
3
#!/bin/sh -e
/myproject/code/golang/Crawling_Course_Update/dmz/bin/dmz &
exit 0

确保在文件的 exit 0 之前添加 &,以使程序在后台运行。

保存并关闭文件后,确保 /etc/rc.local 具有可执行权限:

1
sudo chmod +x /etc/rc.local

然后,重启系统并检查程序是否在启动时自动运行。

请注意,使用 Systemd 是推荐的方法,因为它提供更强大的服务管理功能。根据您的系统和偏好,选择其中一种方法。

Hugo部署

默认情况下,hugo server只会开启127.0.0.1:1313的访问权限,也就是仅本地可以访问,别的主机地址无法访问,需要将1313端口绑定到0.0.0.0上,任何IP都可以访问。命令如下:

1
hugo server --bind "0.0.0.0"

完整版:

1
hugo server --bind "0.0.0.0" --baseURL=117.72.32.241 --port=1313

参考:解决本地无法访问vm虚拟机上centos7服务器中已配置好的hugo站点的问题

查询是否安装某个应用

在 Linux 系统上,你可以使用不同的命令来查询是否安装了某个应用。以下是一些常见的方法:

  1. 使用 which 命令:

    1
    
    which application_name

    application_name 替换为你要检查的应用程序的名称。如果应用程序已安装,该命令将显示应用程序的路径。如果应用程序未安装,不会返回任何结果。

  2. 使用 type 命令:

    1
    
    type application_name

    同样,将 application_name 替换为你要检查的应用程序的名称。如果应用程序已安装,该命令将显示应用程序的类型(通常是可执行文件的路径)。

  3. 使用 dpkg(Debian/Ubuntu 系统):

    1
    
    dpkg -l | grep application_name

    替换 application_name 为你要检查的应用程序的名称。该命令将列出所有已安装的软件包,并使用 grep 过滤包含特定应用程序名称的行。

  4. 使用 rpm(Red Hat/CentOS 系统):

    1
    
    rpm -qa | grep application_name

    同样,替换 application_name 为你要检查的应用程序的名称。该命令将列出所有已安装的 RPM 软件包,并使用 grep 过滤包含特定应用程序名称的行。

  5. 查找可执行文件:

    1
    
    find / -name "application_name" -type f

    替换 application_name 为你要检查的应用程序的名称。该命令将在文件系统中查找指定名称的可执行文件。请注意,这可能需要一些时间,因为它会搜索整个文件系统。

选择适合你系统和包管理器的方法来检查应用程序是否安装。上述命令可能需要使用管理员权限(sudo)来执行,特别是在涉及到系统级安装的情况下。

解压缩

解压归档文件:

1
tar -xvf archive.tar
  • -x: 解压归档文件。
  • -v: 显示详细信息,输出解压时处理的文件列表。
  • -f: 指定要解压的归档文件。

解压 gzip 压缩的归档文件:

1
tar -zxvf archive.tar.gz
  • -z: 使用 gzip 压缩。这告诉 tar 命令在处理归档文件时使用 gzip 解压缩。压缩后的文件通常以 .gz 为扩展名。
  • -x: 解压缩归档文件。这告诉 tar 命令执行解压操作,即从归档文件中提取文件。
  • -v: 显示详细信息。这个选项会在终端上显示 tar 命令正在处理的文件列表。这对于查看解压进度和归档文件内容很有用。
  • -f: 指定归档文件的名称。后面紧跟着要解压的归档文件的名称。

添加到环境变量

1
2
3
4
5
# 如果/etc/profile文件不可编辑,需要修改为可编辑  
chmod -v u+w /etc/profile  
vim /etc/profile  
# 在最后一行加上  
export PATH=$PATH:/usr/local/src/python3/bin

开启防火墙端口

在Linux系统中,防火墙通常使用iptables或者更现代的firewalld进行配置。以下是两者的使用方法:

使用iptables:

1. 开启端口:

1
sudo iptables -A INPUT -p tcp --dport <端口号> -j ACCEPT

<端口号> 替换为您要开启的端口号。

开启端口是临时的,系统重启后将失效。若要使规则永久有效,您需要使用下面的命令保存规则。

2. 保存规则:

1
sudo service iptables save

3. 重启防火墙:

1
sudo service iptables restarts

使用firewalld:

1. 开启端口:

1
sudo firewall-cmd --zone=public --add-port=<端口号>/tcp --permanent

<端口号> 替换为您要开启的端口号。

通过 --permanent 选项将规则永久保存。

2. 重新加载防火墙规则:

1
sudo firewall-cmd --reload

注意事项:

  • 请确保在开启端口之前了解该端口的用途,并确保只开启必要的端口。
  • 在使用iptables时,确保iptables服务已安装并正在运行。
  • 在使用firewalld时,确保firewalld服务已安装并正在运行。

如果您使用的是特定的Linux发行版,还可能会有一些发行版特有的工具或配置文件用于管理防火墙。例如,在Ubuntu上,您可能会使用ufw工具。在CentOS 7及更新版本上,通常会使用firewalld。

请根据您使用的Linux发行版和版本选择适当的命令。如果您不确定,请提供您使用的Linux发行版和版本,我可以为您提供更具体的指导。

systemd将程序日志保存成文件

1.service文件中增加参数配置

1
2
StandardOutput=syslog
StandardError=syslog

参数说明:StandardOutput:required,设置进程的标准输出(STDOUT)。 可设为 inherit, null, tty, journal, syslog, kmsg, journal+console, syslog+console, kmsg+console, file:path, append:path, socket, fd:name 之一。 StandardError:设置进程的标准错误(STDERR)。 取值范围及含义与 StandardOutput= 相同。但有如下例外: (1) inherit 表示使用 StandardOutput= 的值。 (2) fd:name 的默认文件描述符名称为 “stderr” SyslogIdentifier:required,设置日志标识符(发送日志消息时加在行首的字符串)(“syslog tag”)。 默认值是进程的名称。此选项仅在 StandardOutput= 或 StandardError= 的值包含 journal(+console), syslog(+console), kmsg(+console) 之一时才有意义, 并且仅适用于输出到标准输出或标准错误的日志消息。

2.新增配置文件

进入/etc/rsyslog.d/目录, 新增配置文件

1
2
cd /etc/rsyslog.d/
touch MyTest.conf

修改MyTest.conf文件内容

1
vim MyTest.conf

新增内容如下:

1
2
3
4
if ($programname == 'LogTest') then {
	action(type="omfile" file="/var/log/LogTest.log")
	stop
}

LogTest与service文件名对应, “/var/log/LogTest.log"根据需要自行定义。

3.重新加载配置文件

1
systemctl daemon-reload

重启rsyslog

1
systemctl restart rsyslog

4.启动自己的服务

1
systemctl start LogTest

5.查看日志

1
2
3
[root@localhost log]# cd /var/log/
[root@localhost log]# cat LogTest.log
---对应程序的日志输出

参考:linux进阶56——systemd实现程序日志保存成文件

解决云服务器ping不通

在入站规则中添加ICMP协议,用来放通Ping服务。

参考:腾讯云服务器ping不通怎么解决

0%