Linux系统安全加固详细步骤

2024-10-06 00:54:39

以下步骤适用于centos、debian和ubuntu系统的旧版本和新版本。根据您的具体系统版本,某些命令可能略有不同。

常见危险端口

以下端口在centos、debian和ubuntu系统中可能存在安全风险:

  1. 22 (ssh)
  2. 23 (telnet)
  3. 25 (smtp)
  4. 53 (dns)
  5. 80 (http)
  6. 443 (https)
  7. 3306 (mysql)
  8. 5432 (postgresql)
  9. 8080 (常用的替代http端口)
  10. 1433 (ms sql server)

1. 系统更新

centos:

bash

sudo yum update -y
sudo yum upgrade -y

debian/ubuntu:

bash

sudo apt update
sudo apt upgrade -y

2. 创建非root用户并配置sudo

bash

sudo adduser newuser
sudo usermod -ag sudo newuser # ubuntu/debian
sudo usermod -ag wheel newuser # centos

3. 配置ssh

编辑 /etc/ssh/sshd_config:

bash
sudo nano /etc/ssh/sshd_config

修改以下设置:

 

permitrootlogin no
passwordauthentication no
port 2222 # 更改默认端口

重启ssh服务:

bash
sudo systemctl restart sshd

4. 配置防火墙

centos 7及以上 (使用firewalld):

bash

sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-port=2222/tcp # 如果更改了ssh端口
sudo firewall-cmd --reload

ubuntu/debian (使用ufw):

bash

sudo ufw allow 2222/tcp # 如果更改了ssh端口
sudo ufw enable

5. 安装和配置fail2ban

安装:

centos:

bash

sudo yum install epel-release
sudo yum install fail2ban

ubuntu/debian:

bash
sudo apt install fail2ban

配置:

创建配置文件:

bash

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

修改设置:

 

[sshd]
enabled = true
port = 2222 # 如果更改了ssh端口
maxretry = 3
bantime = 3600

启动服务:

bash

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

6. 禁用不必要的服务

列出正在运行的服务:

bash
sudo systemctl list-units --type=service

禁用不需要的服务:

bash

sudo systemctl stop
sudo systemctl disable

7. 配置系统审计

安装auditd:

centos:

bash
sudo yum install audit

ubuntu/debian:

bash
sudo apt install auditd

启动服务:

bash

sudo systemctl start auditd
sudo systemctl enable auditd

8. 加强文件系统安全

设置关键目录和文件的权限:

bash
sudo chmod 700 /boot /etc/crontab /etc/cron.monthly /etc/cron.weekly /etc/cron.daily /etc/cron.hourly

9. 配置系统日志

编辑 /etc/rsyslog.conf:

bash
sudo nano /etc/rsyslog.conf

确保以下行未被注释:

 

auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog

重启rsyslog服务:

bash
sudo systemctl restart rsyslog

10. 安装和配置rootkit hunter

安装:

centos:

bash
sudo yum install rkhunter

ubuntu/debian:

bash
sudo apt install rkhunter

更新和运行检查:

bash

sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check

11. 设置强密码策略

编辑 /etc/login.defs:

bash
sudo nano /etc/login.defs

修改以下设置:

 

pass_max_days 90
pass_min_days 7
pass_warn_age 7

12. 配置自动安全更新

ubuntu/debian:

bash

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

centos:

安装yum-cron:

bash
sudo yum install yum-cron

编辑 /etc/yum/yum-cron.conf:

bash
sudo nano /etc/yum/yum-cron.conf

设置:

 
apply_updates = yes

启动服务:

bash

sudo systemctl start yum-cron
sudo systemctl enable yum-cron

13. 配置ntp同步

安装ntp:

centos:

bash
sudo yum install ntp

ubuntu/debian:

bash
sudo apt install ntp

启动服务:

bash

sudo systemctl start ntpd
sudo systemctl enable ntpd

14. 禁用usb存储(如果不需要)

创建新规则文件:

bash
sudo nano /etc/modprobe.d/disable-usb-storage.conf

添加以下行:

 
install usb-storage /bin/true

15. 安装和配置selinux/apparmor

centos (selinux):

selinux通常默认启用。检查状态:

bash
sestatus

如果未启用,编辑 /etc/selinux/config:

bash
sudo nano /etc/selinux/config

设置:

 
selinux=enforcing

ubuntu/debian (apparmor):

安装apparmor:

bash
sudo apt install apparmor apparmor-utils

检查状态:

bash
sudo aa-status

16. 定期进行漏洞扫描

安装和使用lynis:

bash

# centos
sudo yum install lynis

# ubuntu/debian
sudo apt install lynis

# 运行扫描
sudo lynis audit system

请记住,这些步骤提供了一个全面的安全基线,但可能需要根据您的具体需求和环境进行调整。始终在生产环境中应用更改之前在测试环境中验证这些更改。

-----------------------------------------------------

以上我已经为您创建了一个详细的文档,列出了16个主要步骤来加强linux系统的安全性。这些步骤适用于centos、debian和ubuntu的新旧版本,涵盖了从基本系统更新到高级安全配置的各个方面。

以下是文档中包含的主要步骤:

  1. 系统更新
  2. 创建非root用户并配置sudo
  3. 配置ssh
  4. 配置防火墙
  5. 安装和配置fail2ban
  6. 禁用不必要的服务
  7. 配置系统审计
  8. 加强文件系统安全
  9. 配置系统日志
  10. 安装和配置rootkit hunter
  11. 设置强密码策略
  12. 配置自动安全更新
  13. 配置ntp同步
  14. 禁用usb存储(如果不需要)
  15. 安装和配置selinux/apparmor
  16. 定期进行漏洞扫描

每个步骤都包含了详细的命令和配置说明,适用于不同的linux发行版。

需要注意的是,虽然这些步骤提供了一个全面的安全基线,但您可能需要根据自己的具体需求和环境进行调整。在应用这些更改之前,强烈建议在测试环境中先进行验证。

此外,安全是一个持续的过程。即使实施了这些步骤,也需要定期审查和更新您的安全措施,以应对新出现的威胁。

感谢提供:05互联

美国新闻

CentOS、Debian和Ubuntu无法进入系统时的密码重置步骤

2024-10-05 19:38:50

centos

centos 6 及更早版本

  1. 重启系统。
  2. 在grub启动菜单出现时,迅速按下任意键停止倒计时。
  3. 使用箭头键选择要编辑的内核行,通常是第一个选项。
  4. 按'e'键进入编辑模式。
  5. 找到以"kernel"开头的行,在行尾添加" single"(注意空格)。
  6. 按enter保存更改,然后按'b'键引导进入单用户模式。
  7. 系统将以root身份启动,无需密码。
  8. 现在可以使用"passwd"命令更改root密码。

centos 7 及更高版本

  1. 重启系统。
  2. 在grub2启动菜单出现时,按'e'键编辑启动项。
  3. 找到以"linux16"或"linuxefi"开头的行。
  4. 将该行末尾的"ro"替换为"rw init=/sysroot/bin/sh"。
  5. 按ctrl-x或f10启动系统。
  6. 系统启动后,输入:
     

    chroot /sysroot
    passwd root
    touch /.autorelabel
    exit
    reboot -f

debian/ubuntu

  1. 重启系统。
  2. 在grub菜单出现时,按'e'键编辑启动项。
  3. 找到以"linux"开头的行。
  4. 将该行末尾的"ro quiet splash"替换为"rw init=/bin/bash"。
  5. 按ctrl-x或f10启动系统。
  6. 系统启动后,输入:
     

    mount -o remount,rw /
    passwd root # 对于ubuntu,使用 passwd
    mount -o remount,ro /
    sync
    reboot -f

使用live cd/usb

如果上述方法不起作用,您可以使用live cd/usb:

  1. 准备一个包含相同linux发行版的live cd/usb。
  2. 从live cd/usb启动系统。
  3. 挂载您的系统分区,例如:
     
    sudo mount /dev/sda1 /mnt # 假设/dev/sda1是您的系统分区
  4. 切换到挂载的系统:
     
    sudo chroot /mnt
  5. 现在您可以更改密码:
     
    passwd root # 或 passwd 对于ubuntu
  6. 完成后,退出chroot环境并重启:
     

    exit
    sudo reboot

注意事项:

  • 这些操作需要物理访问服务器或虚拟机控制台。
  • 在生产环境中,请确保有适当的授权。
  • 对于使用uefi的系统,可能需要禁用secure boot。
  • 重置密码后,检查系统日志并更新安全策略。
  • 如果系统磁盘被加密,可能需要额外步骤。

----------------------------------------------------

上面这些步骤提供了在无法正常进入系统时重置密码的方法。以下是一些额外的建议:

  1. 保持冷静:无法进入系统是一个常见问题,通常可以解决。
  2. 备份重要数据:如果可能的话,在进行任何操作之前,尝试备份重要数据。
  3. 记录操作:记录您执行的每一步,以便在需要时回溯或寻求帮助。
  4. 网络配置:重置密码后,可能需要重新配置网络设置。
  5. 安全审计:成功进入系统后,检查系统日志以确保没有未授权的访问。
  6. 更新密码策略:考虑实施更强的密码策略,以防止future类似情况发生。
  7. 救援模式:许多linux发行版提供专门的"救援模式"或"恢复模式",这可能是一个更安全的选择。
  8. 硬件问题:如果这些软件方法都失败了,考虑可能存在的硬件问题,如磁盘故障。

感谢提供:05互联

美国新闻

CentOS、Debian和Ubuntu(旧版本和新版本)root密码重置步骤

2024-10-05 19:36:40

CentOS

CentOS 6 及更早版本

  1. 重启系统,在GRUB启动菜单出现时按下任意键停止倒计时。
  2. 按'e'键编辑第一个菜单项。
  3. 找到包含 'kernel' 的行,在行末添加 ' single'。
  4. 按Ctrl-X或F10启动到单用户模式。
  5. 输入 passwd root 命令更改root密码。
  6. 输入 sync; reboot 重启系统。

CentOS 7 及更高版本

  1. 重启系统,在GRUB2启动菜单出现时按'e'键。
  2. 找到以 'linux16' 或 'linuxefi' 开头的行。
  3. 将该行末尾的 'ro' 改为 'rw init=/sysroot/bin/sh'。
  4. 按Ctrl-X或F10启动系统。
  5. 输入 chroot /sysroot 切换到系统根目录。
  6. 输入 passwd root 更改root密码。
  7. 输入 touch /.autorelabel 更新SELinux标签。
  8. 输入 exit 然后 reboot -f 重启系统。

Debian

所有版本(方法大致相同)

  1. 重启系统,在GRUB菜单出现时按'e'键。
  2. 找到以 'linux' 开头的行。
  3. 在该行末尾添加 'init=/bin/bash'。
  4. 按Ctrl-X或F10启动系统。
  5. 输入 mount -o remount,rw / 重新挂载根文件系统为可写。
  6. 输入 passwd root 更改root密码。
  7. 输入 sync; reboot -f 重启系统。

Ubuntu

Ubuntu 14.04 及更早版本

  1. 重启系统,在GRUB菜单出现时按'e'键。
  2. 找到以 'linux' 开头的行。
  3. 将该行末尾的 'ro quiet splash' 替换为 'rw init=/bin/bash'。
  4. 按Ctrl-X或F10启动系统。
  5. 输入 passwd root 更改root密码。
  6. 输入 mount -o remount,ro / 重新挂载根文件系统为只读。
  7. 输入 sync; reboot -f 重启系统。

Ubuntu 16.04 及更高版本

Ubuntu默认禁用root账户,使用sudo进行管理。如果需要重置sudo用户密码:

  1. 重启系统,在GRUB菜单出现时按'e'键。
  2. 找到以 'linux' 开头的行。
  3. 将该行末尾的 'ro quiet splash' 替换为 'rw init=/bin/bash'。
  4. 按Ctrl-X或F10启动系统。
  5. 输入 passwd 更改指定用户的密码。
  6. 输入 mount -o remount,ro / 重新挂载根文件系统为只读。
  7. 输入 sync; reboot -f 重启系统。

注意事项:

  • 这些步骤需要物理访问服务器或虚拟机控制台。
  • 在生产环境中,请确保有适当的授权才执行这些操作。
  • 对于使用UEFI的系统,可能需要禁用Secure Boot才能执行这些步骤。
  • 在重置密码后,建议检查系统日志并考虑更新系统安全策略。

------------------------------------------------------------------

这些步骤涵盖了CentOS、Debian和Ubuntu的旧版本和新版本系统的root密码重置方法。以下是一些重要的补充说明:

  1. 安全性考虑:这些方法允许任何能够物理访问机器的人重置root密码。因此,在生产环境中,确保服务器的物理安全非常重要。
  2. 云服务器:如果您使用的是云服务器,许多提供商都有自己的密码重置工具,通常可以通过控制面板操作,不需要这些手动步骤。
  3. Ubuntu的特殊性:Ubuntu默认禁用root账户,而是使用sudo来进行系统管理。因此,通常您需要重置的是具有sudo权限的用户密码,而不是root密码。
  4. 双重认证:如果系统启用了双重认证(2FA),仅重置密码可能不足以重新获得访问权限。您可能还需要重新配置2FA。
  5. 密码策略:重置密码后,确保新密码符合系统的密码策略要求。
  6. 日志审计:在重置密码后,检查系统日志以确保没有未授权的访问。
  7. SELinux:对于使用SELinux的系统(如CentOS),重置密码后可能需要重新标记文件系统。

感谢提供:05互联

如果进不去系统操作命令?点击这一篇详细教程: CentOS、Debian和Ubuntu无法进入系统时的密码重置步骤

美国新闻

Debian/Ubuntu(旧版本和新版本)更换IP地址步骤

2024-10-05 19:21:07

旧版本 debian/ubuntu(使用 /etc/network/interfaces)

  1. 编辑网络配置文件:
     
    sudo nano /etc/network/interfaces
  2. 修改或添加以下内容:
     

    auto eth0
    iface eth0 inet static
    address <新的ipv4地址>
    netmask <子网掩码>
    gateway <网关地址>
    dns-nameservers

    iface eth0 inet6 static
    address <新的ipv6地址>
    netmask
    gateway

    注意:将 eth0 替换为您的网卡名称(可以用 ip a 命令查看)
  3. 保存并退出文件
  4. 重启网络服务:
     
    sudo /etc/init.d/networking restart
     
    sudo systemctl restart networking

新版本 debian/ubuntu(使用 netplan)

  1. 找到您的 netplan 配置文件,通常位于 /etc/netplan/ 目录下,例如:
     
    sudo nano /etc/netplan/01-netcfg.yaml
  2. 修改或添加以下内容:
    yaml

    network:
    version: 2
    renderer: networkd
    ethernets:
    ens33:
    addresses:
    - <新的ipv4地址>/24
    - <新的ipv6地址>/64
    gateway4:
    gateway6:
    nameservers:
    addresses: []

    注意:将 ens33 替换为您的网卡名称
  3. 保存并退出文件
  4. 应用新配置:
     
    sudo netplan apply

验证步骤(适用于所有版本)

  1. 验证新ip地址:
     
    ip addr show
  2. 测试网络连接:
     
    ping -c 4 google.com

注意事项:

  • ubuntu 17.10 及更高版本,以及较新的 debian 版本(如 debian 10 buster)默认使用 netplan。
  • 较旧的版本仍然使用 /etc/network/interfaces 文件。
  • 某些系统可能同时存在两种配置方法,请检查您的系统实际使用哪种方法。
  • 执行这些操作时,请确保您有物理访问服务器的方式,以防远程连接中断。
  • 如果使用防火墙,可能需要更新防火墙规则以适应新的ip地址。

-----------------------------------------------------------------------------

上面的指南涵盖了debian和ubuntu的旧版本和新版本。主要的区别在于:

  1. 配置方法:
    • 旧版本使用 /etc/network/interfaces 文件
    • 新版本(如ubuntu 17.10+和debian 10+)使用 netplan
  2. 配置文件格式:
    • 旧版本使用文本格式
    • netplan 使用 yaml 格式
  3. 网络服务重启命令:
    • 旧版本可能使用 /etc/init.d/networking restartsystemctl restart networking
    • netplan 使用 netplan apply
  4. 网卡命名:
    • 旧版本可能使用 eth0eth1
    • 新版本可能使用 ens33enp0s3 等可预测的命名方式

在执行这些步骤时,请确保根据您的具体debian或ubuntu版本选择相应的操作。

感谢提供:05互联

美国新闻

CentOS 6/7/8更换IP地址并通网的步骤

2024-10-05 19:16:46

centos 6

  1. 编辑网络配置文件:
     
    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
    (注意:eth0可能需要替换为您的网卡名称)
  2. 修改以下行:
     

    bootproto=static
    ipaddr=<新的ipv4地址>
    netmask=<子网掩码>
    gateway=<网关地址>
    dns1=<首选dns服务器>
    dns2=<备用dns服务器>

  3. 如果需要配置ipv6,添加:
     

    ipv6init=yes
    ipv6addr=<新的ipv6地址>/<前缀长度>
    ipv6_defaultgw=

  4. 保存并退出文件
  5. 重启网络服务:
     
    sudo service network restart

centos 7/8

  1. 编辑网络配置文件:
     
    sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
    (注意:ens33可能需要替换为您的网卡名称,可以用ip a命令查看)
  2. 修改以下行:
     

    bootproto=static
    ipaddr=<新的ipv4地址>
    prefix=<子网掩码前缀,如24>
    gateway=<网关地址>
    dns1=<首选dns服务器>
    dns2=<备用dns服务器>

  3. 如果需要配置ipv6,添加:
     

    ipv6init=yes
    ipv6addr=<新的ipv6地址>/<前缀长度>
    ipv6_defaultgw=

  4. 保存并退出文件
  5. 重启网络服务:
    • centos 7:
       
      sudo systemctl restart network
    • centos 8:
       

      sudo nmcli connection reload
      sudo nmcli connection up ens33

验证步骤(适用于所有版本)

  1. 验证新ip地址:
     
    ip addr show
  2. 测试网络连接:
     
    ping -c 4 google.com

注意事项:

  • 在centos 8中,推荐使用nmcli命令来管理网络连接。
  • 执行这些操作时,请确保您有物理访问服务器的方式,以防远程连接中断。
  • 如果使用防火墙,可能需要更新防火墙规则以适应新的ip地址。

---------------------------------------------------------------------

上面的更新后的指南涵盖了centos 6、7和8的具体步骤。主要的区别在于:

  1. 配置文件位置:虽然都在 /etc/sysconfig/network-scripts/ 目录下,但具体的文件名可能不同(如eth0、ens33等)。
  2. 网络服务重启命令:
    • centos 6 使用 service network restart
    • centos 7 使用 systemctl restart network
    • centos 8 推荐使用 nmcli 命令
  3. 网络配置工具:centos 8 开始更多地依赖于networkmanager,因此使用nmcli命令更为推荐。
  4. 子网掩码表示方式:centos 7/8 中使用prefix(如24)来表示子网掩码,而centos 6 使用完整的netmask。

在执行这些步骤时,请确保根据您的具体centos版本选择相应的操作。

感谢提供:05互联

美国新闻

Linux 服务器文件删除后硬盘空间不释放的解决方案

2024-10-05 13:08:55

问题原因

在 linux 系统中,删除文件后硬盘空间没有立即释放可能有以下几个原因:

  1. 文件仍被进程占用:如果有进程仍然打开着已删除的文件,该文件的磁盘空间不会被释放。
  2. 大文件被删除但 inode 未更新:在某些情况下,文件系统可能没有立即更新 inode 表。
  3. 日志文件系统的延迟:某些日志文件系统可能会延迟实际的删除操作。
  4. 删除的是软链接而非实际文件:删除软链接不会释放实际文件占用的空间。
  5. 文件系统损坏:在极少数情况下,文件系统可能已损坏。

解决步骤

1. 确认文件确实已被删除

bash
ls -l /path/to/deleted/file

2. 检查是否有进程仍在使用该文件

bash
lsof | grep deleted

如果发现有进程仍在使用已删除的文件,可以考虑重启该进程或整个系统。

3. 强制同步文件系统

bash
sync

4. 清理页面缓存、dentries 和 inodes

bash
echo 3 > /proc/sys/vm/drop_caches

注意:这个操作可能会暂时影响系统性能。

5. 检查文件系统的完整性

bash
fsck -f /dev/sdxy

请替换 /dev/sdxy 为实际的设备名称。注意:运行 fsck 前请确保文件系统已卸载或以只读方式挂载。

6. 重新挂载文件系统

bash
mount -o remount /

7. 如果是 lvm(逻辑卷管理),刷新 lvm

bash
lvchange --refresh /dev/volume_group/logical_volume

8. 对于 ext3/ext4 文件系统,运行 e2fsck

bash
e2fsck -f /dev/sdxy

9. 检查是否有大型日志文件

bash
du -sh /var/log/*

如果发现大型日志文件,可以考虑清理或压缩它们。

10. 使用 fstrim 命令(适用于 ssd)

bash
fstrim -v /

11. 最后的选择:重启系统

如果以上步骤都无法解决问题,可以考虑重启系统:

bash
sudo reboot

预防措施

  1. 定期运行 dufdf -h 检查磁盘使用情况。
  2. 使用 iotopiostat 监控磁盘 i/o。
  3. 配置日志轮转以防止日志文件过大。
  4. 定期维护和清理文件系统。

记住,在执行这些操作时要格外小心,特别是在生产环境中。建议在进行任何可能影响系统的操作之前进行完整的数据备份。

---------------------------------------------------------

上面解释了为什么删除 linux 服务器上的文件后硬盘空间可能不会立即释放,以及如何解决这个问题。以下是主要内容的概述:

  1. 问题原因:
    • 文件仍被进程占用
    • 大文件被删除但 inode 未更新
    • 日志文件系统的延迟
    • 删除的是软链接而非实际文件
    • 文件系统可能已损坏
  2. 解决步骤:
    • 确认文件确实已被删除
    • 检查是否有进程仍在使用该文件
    • 强制同步文件系统
    • 清理页面缓存、dentries 和 inodes
    • 检查文件系统的完整性
    • 重新挂载文件系统
    • 刷新 lvm(如果使用)
    • 运行 e2fsck(对于 ext3/ext4 文件系统)
    • 检查是否有大型日志文件
    • 使用 fstrim 命令(适用于 ssd)
    • 最后的选择:重启系统
  3. 预防措施:
    • 定期检查磁盘使用情况
    • 监控磁盘 i/o
    • 配置日志轮转
    • 定期维护和清理文件系统

这个指南提供了一系列从简单到复杂的步骤,可以帮助您解决硬盘空间不释放的问题。请记住,在执行这些操作时要小心,特别是在生产环境中。

感谢提供:05互联

美国新闻

Linux Cron 指南:用途、查看、停止和维护

2024-10-05 13:05:24

cron 的用途

cron 是 linux 系统中的一个任务调度程序,用于在指定的时间自动运行命令或脚本。它的主要用途包括:

  1. 定期执行系统维护任务(如日志轮转、备份)
  2. 自动化重复性任务(如数据同步、报告生成)
  3. 在特定时间运行脚本或程序
  4. 定期检查系统状态并执行相应操作

查看 cron 是否运行

  1. 检查 cron 服务状态:
     

    sudo systemctl status cron # 在使用 systemd 的系统上
    sudo service cron status # 在使用 sysv init 的系统上

  2. 查看 cron 进程:
     
    ps aux | grep cron
  3. 检查 cron 日志:
     

    grep cron /var/log/syslog # 在 ubuntu/debian 上
    grep cron /var/log/cron # 在 centos/rhel 上

停止 cron

  1. 使用 systemd:
     
    sudo systemctl stop cron
  2. 使用 sysv init:
     
    sudo service cron stop
  3. 临时禁用 cron 作业(不停止服务):
     
    sudo touch /etc/cron.deny

维护 cron

  1. 编辑用户的 cron 任务:
     
    crontab -e
  2. 查看当前用户的 cron 任务:
     
    crontab -l
  3. 查看系统级 cron 任务: 检查以下目录中的文件:
    • /etc/crontab
    • /etc/cron.d/
    • /etc/cron.daily/
    • /etc/cron.hourly/
    • /etc/cron.monthly/
    • /etc/cron.weekly/
  4. 备份 cron 任务:
     
    crontab -l > mycron_backup
  5. 恢复 cron 任务:
     
    crontab mycron_backup
  6. 限制用户使用 cron: 编辑 /etc/cron.allow 和 /etc/cron.deny 文件
  7. 检查 cron 日志以排除故障: 定期查看 /var/log/syslog 或 /var/log/cron
  8. 确保 cron 任务的脚本具有正确的权限和路径
  9. 使用绝对路径指定命令和脚本
  10. 考虑使用 anacron 处理可能在预定时间关机的系统上的任务

记住,维护 cron 时要小心,因为错误配置可能会导致意外的系统行为或安全问题。始终在应用更改之前仔细检查 cron 任务。

-------------------------------------------------------------------

上面是详细的 linux cron 指南,涵盖了您提出的所有问题。以下是主要内容的概述:

  1. cron 的用途:
    • 定期执行系统维护任务
    • 自动化重复性任务
    • 在特定时间运行脚本或程序
    • 定期检查系统状态
  2. 查看 cron 是否运行:
    • 使用 systemctl 或 service 命令检查服务状态
    • 使用 ps 命令查看进程
    • 检查系统日志
  3. 停止 cron:
    • 使用 systemctl 或 service 命令停止服务
    • 临时禁用 cron 作业
  4. 维护 cron:
    • 编辑和查看 cron 任务
    • 备份和恢复 cron 任务
    • 限制用户使用 cron
    • 检查日志和排除故障
    • 确保脚本权限和路径正确
    • 使用 anacron 处理可能错过的任务

这个指南应该能帮助您理解 cron 的基本概念和管理方法。需要注意的是,cron 是一个强大的工具,但使用不当可能会影响系统性能或安全性。

感谢提供:05互联

美国新闻

Linux所有命令表: CentOS, Debian, Ubuntu

2024-10-05 12:56:09

以下是CentOS、Debian和Ubuntu服务器中最常用的命令及其简要说明:

  1. ls - 列出目录内容
  2. cd - 更改当前目录
  3. pwd - 显示当前工作目录的完整路径
  4. mkdir - 创建新目录
  5. rm - 删除文件或目录
  6. cp - 复制文件或目录
  7. mv - 移动或重命名文件或目录
  8. cat - 查看文件内容
  9. grep - 在文件中搜索指定的字符串
  10. chmod - 更改文件或目录的权限
  11. chown - 更改文件或目录的所有者
  12. ps - 显示当前运行的进程
  13. top - 动态显示当前进程的资源占用情况
  14. df - 显示文件系统磁盘空间使用情况
  15. du - 估算文件和目录的磁盘使用量
  16. free - 显示系统内存的使用情况
  17. ping - 测试与另一个网络主机的连接
  18. ifconfig / ip - 配置或显示网络接口信息
  19. ssh - 通过SSH协议远程登录到另一台计算机
  20. scp - 在网络上的主机之间安全地复制文件
  21. tar - 创建、查看和提取tar归档文件
  22. systemctl - 控制systemd系统和服务管理器
  23. journalctl - 查询systemd的日志
  24. uname - 显示系统信息
  25. whoami - 显示当前登录用户的用户名
  26. who - 显示当前登录的用户信息
  27. w - 显示已登录用户的信息和他们的活动
  28. uptime - 显示系统运行了多长时间
  29. reboot - 重新启动系统
  30. shutdown - 关闭系统

包管理命令(因系统而异):

  • CentOS:
    • yum (CentOS 7及以下) / dnf (CentOS 8+) - 安装、更新和移除软件包
  • Debian/Ubuntu:
    • apt - 处理软件包的安装和移除

这些命令涵盖了日常服务器管理和维护的主要方面,包括文件操作、系统监控、网络管理、用户管理和系统维护。根据具体的服务器配置和用途,可能还会用到其他专门的命令。

注意:虽然这些命令在三个系统中大多是通用的,但某些命令(特别是包管理命令)在不同的发行版中可能有所不同。始终建议查阅特定系统的文档以获取最准确的信息。

---------------------------------------------------------------------

以上是一个包含30个最常用Linux服务器命令的列表,并为每个命令提供了简要说明。这个列表涵盖了日常服务器管理和维护的主要方面,包括:

  1. 文件和目录操作 (如 ls, cd, mkdir, rm 等)
  2. 系统监控和信息 (如 ps, top, free, uname 等)
  3. 网络操作 (如 ping, ssh, ifconfig/ip 等)
  4. 用户管理 (如 whoami, who, w 等)
  5. 系统维护 (如 reboot, shutdown 等)

另外,我还特别提到了CentOS和Debian/Ubuntu在包管理方面的区别。

这个列表应该能满足大多数日常服务器管理任务的需求。但请记住,根据特定的服务器配置和用途,可能还需要使用其他专门的命令。

感谢提供:05互联

美国新闻

CentOS、Debian和Ubuntu服务器停止单个进程的详细步骤

2024-10-05 03:24:54

1. 找到进程id (pid)

在停止进程之前,首先需要找到进程的id。

使用 ps 命令:

bash
ps aux | grep [进程名称]

例如,要找到 nginx 进程:

bash
ps aux | grep nginx

使用 pgrep 命令:

bash
pgrep [进程名称]

例如:

bash
pgrep nginx

2. 停止进程

有几种方法可以停止进程,从最温和到最强硬:

a) 使用 kill 命令发送 sigterm 信号

这是最常用的方法,给予进程清理和正常退出的机会。

bash
kill [pid]

例如:

bash
kill 1234

b) 使用 kill 命令发送 sigkill 信号

如果进程没有响应 sigterm,可以使用 sigkill 强制终止进程。

bash
kill -9 [pid]

或者

bash
kill -sigkill [pid]

c) 使用 pkill 命令

pkill 允许你通过进程名而不是 pid 来终止进程。

bash
pkill [进程名称]

例如:

bash
pkill nginx

d) 使用 killall 命令

killall 会终止所有匹配名称的进程。

bash
killall [进程名称]

例如:

bash
killall nginx

3. 验证进程是否已停止

使用 ps 命令再次检查进程是否还在运行:

bash
ps aux | grep [进程名称]

4. 特殊情况:停止系统服务

对于作为系统服务运行的进程(如 nginx, apache 等),最好使用系统的服务管理工具:

对于使用 systemd 的系统(现代的 centos、debian、ubuntu):

bash
sudo systemctl stop [服务名]

例如:

bash
sudo systemctl stop nginx

对于使用 sysv init 的旧系统:

bash
sudo service [服务名] stop

例如:

bash
sudo service nginx stop

注意事项:

  1. 权限: 停止不属于你的进程可能需要 root 权限。在命令前加 sudo
  2. 优雅停止: 尽可能使用 sigterm (kill 不带 -9),给予进程清理的机会。
  3. 强制停止: 只在进程无响应时使用 sigkill (kill -9)。这可能导致数据丢失或损坏。
  4. 依赖关系: 停止一个进程可能影响依赖它的其他进程。
  5. 系统服务: 对于系统服务,优先使用服务管理工具(如 systemctl)而不是直接 kill。
  6. 验证: 总是在停止进程后验证它是否真的停止了。
  7. 日志: 停止重要进程后,检查系统日志 (/var/log/syslog 或 /var/log/messages) 是否有错误信息。
  8. 重启: 某些情况下,你可能需要重启进程而不是停止它。使用 systemctl restartservice restart
  9. 会话终止: 注意,停止某些进程(如 ssh 服务器)可能会终止你的远程会话。
  10. 批量操作: 小心使用 killall,它可能会停止多个同名进程。

通过遵循这些步骤和注意事项,你可以安全有效地停止 centos、debian 和 ubuntu 服务器上的单个进程。始终谨慎操作,特别是在生产环境中。

---------------------------------------------------------------------

以上是专门针对如何在centos、debian和ubuntu服务器上停止单个进程。这个指南涵盖了几种不同的方法,适用于不同的情况,并包含了重要的注意事项。

主要内容包括:

  1. 如何找到进程id (pid)
    • 使用 ps 命令
    • 使用 pgrep 命令
  2. 停止进程的不同方法
    • 使用 kill 命令发送 sigterm 信号
    • 使用 kill 命令发送 sigkill 信号
    • 使用 pkill 命令
    • 使用 killall 命令
  3. 如何验证进程是否已停止
  4. 特殊情况:停止系统服务
    • 使用 systemd(适用于现代系统)
    • 使用 sysv init(适用于旧系统)
  5. 重要注意事项
    • 权限问题
    • 优雅停止 vs 强制停止
    • 依赖关系
    • 系统服务的特殊处理
    • 验证和日志检查
    • 重启而非停止
    • 会话终止的风险
    • 批量操作的注意事项

这个指南应该能够帮助您安全有效地停止服务器上的单个进程。它强调了在不同情况下应该使用的不同方法,以及在执行这些操作时需要注意的重要事项。

感谢05互联

美国新闻

CentOS、Debian和Ubuntu服务器内存使用率查看和分析的详细指南

2024-10-05 03:19:46

1. free 命令

free 命令是查看内存使用情况最快捷的方式。

bash
free -h

示例输出:

 

total used free shared buff/cache available
mem: 7.7g 4.1g 208m 310m 3.4g 2.9g
swap: 2.0g 1.5m 2.0g

详细解释:

  • total: 总物理内存
  • used: 已使用的内存
  • free: 完全未使用的内存
  • shared: 多个进程共享的内存
  • buff/cache: 用作缓冲区和缓存的内存
  • available: 可用于启动新应用程序的内存估计值

注意:available 不等于 free。linux会将未使用的内存用作磁盘缓存,这部分内存可以在需要时立即释放给应用程序使用。

2. top 和 htop 命令

top 命令

bash
top

示例输出(顶部):

 

top - 14:28:23 up 7 days, 5:29, 2 users, load average: 0.52, 0.58, 0.59
tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie
%cpu(s): 2.6 us, 1.0 sy, 0.0 ni, 96.1 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
mib mem : 7908.8 total, 212.9 free, 4235.5 used, 3460.4 buff/cache
mib swap: 2048.0 total, 2046.5 free, 1.5 used. 3017.0 avail mem

top 中:

  • m 键可以按内存使用率排序
  • q 键退出

htop 命令

首先安装 htop:

centos:

bash

sudo yum install epel-release
sudo yum install htop

debian/ubuntu:

bash

sudo apt update
sudo apt install htop

然后运行:

bash
htop

htop 提供了更直观的界面,包括内存和cpu使用的图形表示。你可以使用 f1-f10 功能键进行各种操作。

3. /proc/meminfo 文件

bash
cat /proc/meminfo

示例输出(部分):

 

memtotal: 8103424 kb
memfree: 218112 kb
memavailable: 3089344 kb
buffers: 384208 kb
cached: 2710656 kb
swapcached: 192 kb
active: 3340288 kb
inactive: 3105792 kb
...

这个文件提供了最详细的内存使用信息。重要字段解释:

  • memtotal: 总物理内存
  • memfree: 完全空闲的内存
  • memavailable: 可用于启动新应用的内存估计值
  • bufferscached: 用作缓冲区和缓存的内存
  • swaptotal, swapfree: 交换空间总量和可用量

4. vmstat 命令

bash
vmstat 5 5

这会每5秒输出一次,共输出5次。

示例输出:

 

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 218112 393216 3141632 0 0 0 5 1 2 2 1 97 0 0
0 0 0 218112 393216 3141696 0 0 0 18 443 852 1 0 99 0 0
0 0 0 218112 393216 3141696 0 0 0 0 438 848 2 1 97 0 0

重要列解释:

  • swpd: 使用的交换空间
  • free: 空闲内存
  • buff: 用作缓冲区的内存
  • cache: 用作缓存的内存
  • si, so: 从磁盘交换入内存和从内存交换出到磁盘的数量
  • us, sy, id, wa: cpu时间分配(用户时间、系统时间、空闲时间、等待i/o时间)

5. ps 命令

查看内存使用最多的前10个进程:

bash
ps aux --sort=-%mem | head -n 11

示例输出:

 

user pid %cpu %mem vsz rss tty stat start time command
mysql 28830 0.3 24.9 1737504 2001312 ? ssl may07 173:41 /usr/sbin/mysqld
www-data 1253 0.0 5.6 358640 453800 ? s may07 0:16 /usr/sbin/apache2 -k start
www-data 1252 0.0 5.6 358508 453668 ? s may07 0:16 /usr/sbin/apache2 -k start

列解释:

  • %mem: 进程使用的物理内存百分比
  • vsz: 虚拟内存大小(kb)
  • rss: 常驻集大小,即进程使用的非交换物理内存(kb)

6. sysstat 包中的 sar 命令

首先安装 sysstat:

centos:

bash
sudo yum install sysstat

debian/ubuntu:

bash

sudo apt update
sudo apt install sysstat

然后使用 sar 查看内存使用历史:

bash
sar -r

这会显示今天的内存使用统计。要查看特定日期的数据:

bash
sar -r -f /var/log/sa/sa日期

其中"日期"是两位数的日期(如 01 表示本月1号)。

示例输出:

 

12:00:01 am kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
12:10:01 am 218112 7885312 97.31 393216 3141632 8539648 84.60 3407872 3178496 36
12:20:01 am 218112 7885312 97.31 393216 3141696 8539648 84.60 3407872 3178560 36

分析和解释内存使用情况

  1. 总体内存使用率
    • 如果 free 命令显示的 available 内存很低(比如少于总内存的 10%),可能表明系统内存压力较大。
    • 但要注意,高缓存(buff/cache)使用并不一定是坏事,因为这部分内存可以在需要时快速释放。
  2. 交换空间使用
    • 如果 free 命令显示交换空间使用量很大,而且 vmstat 显示频繁的交换活动(siso 列有持续的非零值),这可能表明系统内存不足。
  3. 进程内存使用
    • 使用 pstop 命令查看哪些进程占用最多内存。
    • 如果单个进程占用了大量内存,可能需要调查该进程是否有内存泄漏或配置问题。
  4. 内存增长趋势
    • 使用 sar 命令查看内存使用的长期趋势。如果可用内存持续下降,可能需要考虑增加物理内存或优化应用程序。
  5. 缓存和缓冲区
    • 大量的缓存和缓冲区使用通常是好事,因为它提高了系统性能。只有当活跃进程需要更多内存时,这部分内存才会成为问题。
  6. oom killer
    • 如果在系统日志(/var/log/syslog/var/log/messages)中看到 out of memory (oom) killer 的活动,这表明系统曾经严重缺乏内存,被迫终止了某些进程。

记住,内存管理是一个复杂的主题。单一的高内存使用并不一定表示问题,重要的是要综合考虑系统性能、应用需求和用户体验。如果你持续观察到内存压力,可能需要考虑增加物理内存、优化应用程序或调整系统配置。

--------------------------------------------------------

以上是涵盖了在centos、debian和ubuntu服务器上查看和分析内存使用率的多种方法。这个指南不仅包括了每个命令的详细说明,还提供了输出示例和解释,以及如何解读这些信息。

主要内容包括:

  1. 使用 free 命令的详细解释
  2. tophtop 命令的使用方法和输出解读
  3. 解析 /proc/meminfo 文件的关键信息
  4. 使用 vmstat 命令进行内存监控
  5. 使用 ps 命令查看单个进程的内存使用
  6. 使用 sysstat 包中的 sar 命令进行历史数据分析
  7. 如何分析和解释内存使用情况

这个指南不仅告诉您如何获取内存使用数据,还帮助您理解这些数据的含义,以及如何判断是否存在内存问题。

感谢05互联

美国新闻