• [技术干货] 测试Linux 中定时任务 crontab 的使用详解
    Linux 中定时任务 crontab 的使用详解在 Linux 系统中,crontab 是一个非常实用的工具,用于设置定时任务。它可以让我们在特定的时间自动执行命令、脚本或程序,极大地提高了工作效率和系统的自动化程度。本文将详细介绍 crontab 的使用方法,并包含代码示例。一、crontab 简介crontab 是一个用于在特定时间执行任务的工具,它基于 cron 守护进程运行。cron 守护进程会在系统启动时自动启动,并定期检查 crontab 文件中的任务列表,以确定是否需要执行某个任务。二、crontab 的基本语法crontab 的语法格式如下:* * * * * command_to_execute其中,五个星号分别代表分钟、小时、日、月、周几。command_to_execute 是要执行的命令或脚本。例如,以下 crontab 条目表示每分钟执行一次echo "Hello, world!"命令:* * * * * echo "Hello, world!"三、crontab 的时间表示法分钟(0-59)可以使用具体的分钟数,如15表示在 15 分钟时执行任务。也可以使用通配符*表示每分钟都执行任务。还可以使用范围表示法,如10-20表示在 10 到 20 分钟之间的每分钟都执行任务。可以使用步长表示法,如*/5表示每隔 5 分钟执行一次任务。小时(0-23)与分钟的表示法类似,可以使用具体的小时数、通配符、范围表示法和步长表示法。日(1-31)可以使用具体的日期,如15表示在每月的 15 日执行任务。也可以使用通配符*表示每天都执行任务。可以使用范围表示法,如10-20表示在每月的 10 到 20 日之间的每天都执行任务。可以使用步长表示法,如*/5表示每隔 5 天执行一次任务。月(1-12)可以使用具体的月份,如5表示在 5 月执行任务。也可以使用通配符*表示每月都执行任务。可以使用范围表示法,如5-8表示在 5 月到 8 月之间的每月都执行任务。可以使用步长表示法,如*/3表示每隔 3 个月执行一次任务。周几(0-6,0 表示周日)可以使用具体的周几,如3表示在周三执行任务。也可以使用通配符*表示每周都执行任务。可以使用范围表示法,如2-4表示在周二到周四之间的每周都执行任务。可以使用步长表示法,如*/2表示每隔 2 周执行一次任务。四、crontab 的使用步骤编辑 crontab 文件使用crontab -e命令编辑当前用户的 crontab 文件。如果是第一次编辑,系统可能会提示你选择一个文本编辑器。在打开的文件中,按照 crontab 的语法格式添加任务条目。保存并退出编辑完成后,保存文件并退出编辑器。cron 守护进程会自动读取新的 crontab 文件,并按照其中的任务条目执行任务。查看 crontab 任务列表使用crontab -l命令可以查看当前用户的 crontab 任务列表。删除 crontab 任务使用crontab -r命令可以删除当前用户的所有 crontab 任务。五、代码示例以下是一些 crontab 任务的代码示例:每天凌晨 2 点执行备份脚本0 2 * * * /path/to/backup_script.sh每周一到周五的上午 9 点执行清理日志文件的脚本0 9 * * 1-5 /path/to/clean_logs_script.sh每月 1 日和 15 日的下午 3 点执行数据库备份脚本0 15 1,15 * * /path/to/database_backup_script.sh每隔 10 分钟执行一次检查服务器状态的脚本*/10 * * * * /path/to/check_server_status_script.sh六、注意事项任务执行的环境变量crontab 任务执行时的环境变量可能与用户登录时的环境变量不同。如果任务需要特定的环境变量,可以在任务条目中设置环境变量,或者在脚本中显式地设置环境变量。任务执行的输出和错误处理默认情况下,crontab 任务的输出会通过邮件发送给用户。如果任务的输出较多或者不需要邮件通知,可以将输出重定向到文件或者/dev/null。如果任务执行出现错误,可以通过查看系统日志或者邮件来确定错误原因。任务的安全性确保任务执行的命令或脚本具有足够的权限,并且不会对系统造成安全风险。避免在 crontab 任务中使用敏感信息,如密码等。如果任务需要使用敏感信息,可以将敏感信息存储在安全的地方,并在任务执行时读取。总之,crontab 是一个非常强大的工具,可以帮助我们实现系统的自动化管理。通过合理地设置 crontab 任务,我们可以提高工作效率,减少人工干预,并且确保系统的稳定运行。希望本文对大家在使用 crontab 时有所帮助。
  • [生态空间] Linux 中定时任务 rsync 的使用指南
    Linux 中定时任务 rsync 的使用指南在 Linux 系统中,rsync是一个强大的文件同步工具,可以实现本地文件系统之间或者远程服务器之间的文件同步。结合定时任务,可以实现自动化的数据备份和同步操作。本文将详细介绍在 Linux 中如何使用定时任务来执行rsync,并包含具体的代码示例。一、rsync 简介rsync(Remote Sync)是一个开源的快速文件同步工具,它可以在不同的位置之间同步文件和目录,包括本地到本地、本地到远程、远程到本地。rsync具有以下特点:高效性:只传输文件中发生变化的部分,大大减少了数据传输量和同步时间。灵活性:可以通过多种方式进行配置,包括选择要同步的文件和目录、设置传输参数等。安全性:可以使用 SSH 等加密协议进行远程同步,确保数据传输的安全。二、安装 rsync在大多数 Linux 发行版中,rsync通常已经预装。如果你的系统中没有安装rsync,可以使用以下命令进行安装:对于 Debian/Ubuntu 系统:sudo apt-get install rsync对于 CentOS/Fedora 系统:sudo yum install rsync三、rsync 的基本用法本地文件同步rsync -av /source/directory /destination/directory其中,-a选项表示归档模式,保留文件的属性和权限;-v选项表示详细输出。远程文件同步使用rsync进行远程文件同步时,需要指定远程服务器的地址和路径。例如:rsync -av /source/directory user@remote_server:/destination/directory如果远程服务器需要密码验证,可以使用-e选项指定 SSH 连接,并在命令行中输入密码。例如:rsync -av -e "ssh -p port_number" /source/directory user@remote_server:/destination/directory四、使用定时任务执行 rsync创建 rsync 脚本首先,创建一个用于执行rsync的脚本文件,例如rsync_backup.sh:#!/bin/bash SOURCE_DIR="/source/directory" DEST_DIR="/destination/directory" rsync -av $SOURCE_DIR $DEST_DIR将SOURCE_DIR和DEST_DIR替换为实际的源目录和目标目录。设置脚本可执行权限chmod +x rsync_backup.sh使用 crontab 设置定时任务使用crontab -e命令编辑定时任务列表。在打开的文件中,添加以下行:0 2 * * * /path/to/rsync_backup.sh这表示每天凌晨 2 点执行rsync_backup.sh脚本。你可以根据实际需求调整定时任务的时间设置。例如,*/5 * * * * /path/to/rsync_backup.sh表示每 5 分钟执行一次脚本。五、代码解释脚本文件rsync_backup.sh这个脚本文件定义了源目录和目标目录,然后使用rsync命令进行文件同步。rsync的-av选项确保文件以归档模式进行同步,并输出详细信息。crontab 定时任务设置crontab的时间设置格式为:分钟 小时 日 月 周几 命令。在上面的例子中,0 2 * * *表示在每天凌晨 2 点执行指定的命令。六、注意事项权限问题在进行远程文件同步时,确保你有足够的权限访问源目录和目标目录。如果使用 SSH 连接,确保你的 SSH 密钥或密码正确配置。对于本地文件同步,确保脚本文件和目标目录具有适当的权限,以便rsync能够正常执行。网络连接如果进行远程文件同步,确保网络连接稳定。如果网络连接不稳定,可能会导致同步失败或数据丢失。测试和监控在设置定时任务之前,先手动执行脚本文件,确保rsync命令能够正常工作。定期检查同步结果,确保数据备份和同步的准确性。可以使用日志文件或其他监控工具来跟踪同步过程。
  • [技术干货] Linux 中 SELinux 的使用详解
    Linux 中 SELinux 的使用详解在 Linux 系统中,SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)安全系统,它为系统提供了更高级别的安全保障。本文将详细介绍 SELinux 的使用方法,包括其基本概念、配置和管理,以及一些常见的操作示例,并包含相关代码。一、SELinux 简介SELinux 是由美国国家安全局(NSA)开发的一个 Linux 内核安全模块,它通过对系统中的主体(如用户、进程)和客体(如文件、目录、端口等)进行强制访问控制,来增强系统的安全性。与传统的自主访问控制(DAC)不同,SELinux 不依赖于用户的主观判断,而是根据系统管理员定义的安全策略来决定主体对客体的访问权限。二、SELinux 的工作模式SELinux 有三种工作模式:Enforcing(强制模式):在这种模式下,SELinux 会严格按照安全策略进行访问控制,如果违反安全策略,访问将被拒绝。Permissive(宽容模式):在这种模式下,SELinux 会记录违反安全策略的访问行为,但不会拒绝访问。这种模式通常用于调试和测试。Disabled(禁用模式):在这种模式下,SELinux 被完全禁用,系统将恢复到传统的自主访问控制模式。三、SELinux 的配置文件SELinux 的主要配置文件是/etc/selinux/config,该文件包含了 SELinux 的工作模式、策略类型等配置选项。以下是一个典型的/etc/selinux/config文件的内容:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted在这个配置文件中,SELINUX=enforcing表示将 SELinux 设置为强制模式,SELINUXTYPE=targeted表示使用目标策略类型,即只对特定的进程和服务进行安全控制。四、SELinux 的管理工具Linux 系统提供了一些工具来管理 SELinux,其中最常用的工具是sestatus和getenforce,它们可以用来查看 SELinux 的当前状态。以下是使用这两个工具的示例:# 查看 SELinux 的状态 sestatus # 查看 SELinux 的工作模式 getenforce如果要修改 SELinux 的工作模式,可以使用setenforce命令。例如,要将 SELinux 从强制模式切换到宽容模式,可以使用以下命令:setenforce 0要将 SELinux 从宽容模式切换到强制模式,可以使用以下命令:setenforce 1五、SELinux 的策略管理SELinux 的安全策略是由一系列规则组成的,这些规则定义了主体对客体的访问权限。Linux 系统提供了一些工具来管理 SELinux 的安全策略,其中最常用的工具是semanage和audit2allow。semanage工具semanage工具可以用来管理 SELinux 的各种策略对象,如用户、角色、类型、端口等。例如,要查看当前系统中所有的 SELinux 用户,可以使用以下命令:semanage login -l要为一个目录设置特定的 SELinux 类型,可以使用以下命令:semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"这个命令将/var/www/html目录及其子目录的 SELinux 类型设置为httpd_sys_content_t,以便 Apache 服务器能够正确访问这些目录。audit2allow工具audit2allow工具可以用来分析 SELinux 的审计日志,并生成相应的策略规则,以便允许特定的访问行为。例如,如果一个进程被 SELinux 拒绝访问某个文件,可以使用以下命令来分析审计日志并生成相应的策略规则:ausearch -m avc -ts recent | audit2allow -M mypolicy这个命令将分析最近的 SELinux 审计日志,并生成一个名为mypolicy的策略模块,该模块包含了允许被拒绝访问行为的策略规则。要加载这个策略模块,可以使用以下命令:semodule -i mypolicy.pp六、SELinux 的常见问题及解决方法在使用 SELinux 的过程中,可能会遇到一些问题,以下是一些常见问题及解决方法:应用程序无法访问文件或目录如果一个应用程序无法访问某个文件或目录,可能是因为 SELinux 阻止了该访问行为。可以使用sestatus和audit2allow工具来查看 SELinux 的状态和审计日志,并根据日志信息生成相应的策略规则,以允许应用程序访问文件或目录。SELinux 阻止网络服务的访问如果一个网络服务无法正常工作,可能是因为 SELinux 阻止了该服务的网络访问。可以使用semanage工具来查看和修改网络服务的 SELinux 策略,以允许该服务进行网络访问。SELinux 导致系统性能下降在某些情况下,SELinux 可能会导致系统性能下降,特别是在处理大量文件访问或网络连接时。可以通过调整 SELinux 的策略和参数,或者将 SELinux 切换到宽容模式或禁用模式,来提高系统性能。但是,在禁用 SELinux 之前,应该确保系统已经采取了其他足够的安全措施。七、总结SELinux 是一个强大的安全系统,它可以为 Linux 系统提供更高级别的安全保障。通过合理配置和管理 SELinux,可以有效地防止系统被恶意攻击和数据泄露。在使用 SELinux 的过程中,可能会遇到一些问题,但是通过使用适当的工具和方法,可以很容易地解决这些问题。希望本文对大家在使用 SELinux 时有所帮助。
  • [技术干货] 高手必知的Linux三剑客:grep、sed、awk
    高手必知的Linux三剑客:grep、sed、awk在Linux世界中,有三把强大的文本处理工具,它们被称为"三剑客":grep、sed和awk。这些工具是Linux系统管理员和开发者的必备技能,它们能够高效地处理文本数据,进行复杂的文本搜索、替换和报告生成等任务。1. grep:文本搜索的利剑grep是一个强大的文本搜索工具,它允许用户在文件中搜索包含特定模式的行。grep的名称来源于"Global Regular Expression Print",即全局正则表达式打印。1.1 基本用法grep 'pattern' filename这条命令会在filename文件中搜索包含pattern的所有行,并打印出来。1.2 常用选项-i:忽略大小写。-v:打印不匹配的行。-n:显示匹配行的行号。1.3 示例grep -i 'error' log.txt # 忽略大小写搜索包含"error"的行 grep -v 'error' log.txt # 打印不包含"error"的行 grep -n 'error' log.txt # 显示包含"error"的行及其行号2. sed:文本编辑的快刀sed(Stream Editor)是一个流编辑器,用于对文本数据进行过滤和替换。sed可以读取输入的文本行,然后根据指定的命令对这些行进行编辑。2.1 基本用法sed 's/old/new/' filename这条命令会在filename文件中将所有出现的old替换为new。2.2 常用选项-i:直接修改文件。-n:仅打印经过sed处理的行。2.3 示例sed -i 's/old/new/g' filename # 直接在文件中替换所有old为new sed -n '2,5p' filename # 打印文件的第2行到第5行3. awk:文本报告的神枪awk是一个强大的文本处理工具,特别适合于生成报告和处理列数据。awk的名称来源于其作者的姓氏:Aho、Weinberger和Kernighan。3.1 基本用法awk '条件 {动作}' filename这条命令会在filename文件中对满足条件的行执行动作。3.2 常用选项-F:设置输入字段的分隔符。-v:向awk脚本传递变量。3.3 示例awk -F, '{print $1}' data.csv # 以逗号为分隔符,打印第一列 awk -v var="value" '{print var}' # 使用外部变量4. 实战演练:三剑客的协同作战在实际工作中,我们经常需要将grep、sed和awk结合起来使用,以实现更复杂的文本处理任务。4.1 搜索并替换假设我们需要在日志文件中搜索包含特定错误的行,并将这些行中的日期格式从YYYY-MM-DD转换为DD/MM/YYYY。grep '特定错误' log.txt | sed 's/\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3\/\2\/\1/'4.2 生成报告使用awk可以轻松生成基于文本文件的报告。例如,如果我们有一个包含员工信息的CSV文件,我们可以使用以下命令来生成一个按部门分组的员工名单:awk -F, 'NR>1 {print $1 " - " $2 " (" $3 ") " $4}' employees.csv这里NR>1确保标题行不被打印,-F,设置逗号为字段分隔符。5. 深入探索grep、sed和awk的功能远不止于此,它们都支持正则表达式,可以进行复杂的文本匹配和处理。此外,它们还可以通过管道(|)与其他命令结合使用,实现更强大的功能。6. 结语掌握grep、sed和awk的使用,对于任何需要处理文本数据的Linux用户来说都是极其重要的。它们不仅提高了工作效率,而且让你能够编写出简洁而强大的脚本。希望这篇博客能够帮助你更好地理解和使用Linux三剑客。
  • [技术干货] 60个常见的 Linux 指令-转载
    1.ssh 登录到计算机主机 ssh -p port username@hostname username: 远程计算机上的用户账户名。 hostname: 远程计算机的 IP 地址或主机名。  -p 选项指定端口号。  2.ls 列出目录内容 ls ls -l  # 显示详细列表 ls -a  # 显示包括隐藏文件在内的所有内容 3.pwd 当前终端会话所在的完整路径 pwd 4.cd 切换当前工作目录 cd [directory] cd .. #上一级目录 cd ~ #返回当前用户主目录 5.touch 创建空文件或更新文件的时间戳 touch [options] file 1 6.echo 终端输出文本或变量值 echo [options] [string...] echo "This is a new line" > newfile.txt #写入文件 echo "Another line" >> existingfile.txt #追加到文件 string:要输出的文本或变量。  7.nano 在终端中编辑文件 nano [options] [file] # 例如:创建或编辑文件 nano myfile.txt 8.vim 文本编辑器 普通模式(Normal Mode): 默认模式,用于浏览和执行命令。 插入模式(Insert Mode): 用于文本输入。 命令行模式(Command-Line Mode): 用于输入命令(如保存、退出等)。  vim filename.txt 9.cat 查看、连接和创建文件 cat filename.txt    #显示文件内容 cat file1.txt file2.txt    #连接多个文件并显示 cat file1.txt file2.txt > combined.txt    #将多个文件合并为一个文件 cat file1.txt >> existingfile.txt    #追加内容到文件末尾 cat -n filename.txt    #显示文件内容和行号 cat -v filename.txt    #显示不可打印字符 10.shred 安全删除敏感文件 shred [options] file... 1 -u:在删除文件后删除文件名,即在销毁文件内容后删除文件本身。 -v:显示详细信息,输出进度信息。 -n:指定覆盖文件内容的次数,默认是 3 次。 -z:在覆盖后用零填充文件,以进一步掩盖删除的痕迹。  11.mkdir 创建新目录 mkdir [options] directory... 1 -p:递归创建目录。如果上级目录不存在,mkdir 会自动创建它们。 -v:显示创建目录的详细信息。 -m:设置新目录的权限(模式),以八进制表示。  12.cp 复制文件和目录 cp [options] source destination source:要复制的源文件或目录。 destination:目标路径,可以是文件或目录。 -r, --recursive:递归复制,用于复制目录及其所有内容。 -i, --interactive:交互模式,如果目标文件已存在则提示是否覆盖。 -v, --verbose:显示详细信息,输出复制操作的详细信息。  13.rm 删除文件和目录 rm [options] file... 1 -r, --recursive:递归删除,用于删除目录及其所有内容。 -f, --force:强制删除,不提示错误信息,即使文件不存在也不会报错。 -i:交互式删除,在删除每个文件之前都会询问确认。 -v, --verbose:显示详细信息,输出删除操作的详细信息。 -d:删除空目录。  14.rmdir 删除空目录 rmdir [options] directory... -p:递归删除目录,即删除指定目录及其所有空的父目录。 -v, --verbose:显示详细信息,输出删除操作的详细信息。  15.ln 创建链接 ln [options] source [target] -s, --symbolic:创建符号链接。如果不使用此选项,将创建硬链接。 -f, --force:强制创建链接,覆盖已存在的文件或链接。 -i, --interactive:交互式创建链接,如果目标已存在则提示确认。  16.clear 清除终端屏幕 clear 1 17.whoami 显示当前的用户的用户名(确定当前用户身份) whoami id    #当前用户的详细信息,包括用户 ID (UID)、组 ID (GID) 以及所属组 who    #系统中所有当前登录的用户 18.useradd 创建新用户账户(系统管理员添加新用户) sudo useradd [options] username -m:创建用户的家目录(/home/username),如果家目录不存在时。 -d:指定用户的家目录路径。 -s:指定用户的默认 shell(如 /bin/bash)。 -g:指定用户的初始主组。 -G:指定用户所属的附加组(可以指定多个组,用逗号分隔)。 -e:设置用户账户的过期日期(格式为 YYYY-MM-DD)。 -p:指定用户的密码(通常是加密后的密码,明文密码不推荐)。 -c:添加用户的注释(如全名)。 -f:指定用户账户过期后的天数,-1 表示用户账户永不过期。  19.sudo 超级用户(root)权限执行命令 普通用户执行管理员权限的任务,而不需要直接登录root用户 使用 sudo 时通常需要输入用户密码,而不是 root 密码  sudo command [options] # 以超级用户权限安装软件(例如使用 apt-get) sudo apt-get update sudo apt-get install package_name 20.adduser 创建新用户账户 sudo adduser [options] username 1 在一些 Linux 发行版中,adduser 是 useradd 的一个友好封装,功能上类似但提供了更多的默认设置和提示。 --home:指定用户的家目录路径。 --shell:指定用户的默认 shell。 --gecos:添加用户的注释(如全名)。 --ingroup:指定用户的初始主组。 --disabled-password:创建用户时不设置密码。 --disabled-login:创建用户时禁用登录。  21.su 切换用户账户 su 是 “substitute user” 或 “switch user” 的缩写,它可以让你切换到另一个用户账户,包括 root 用户。  su [options] [username] su -    #切换到 root 用户并模拟登录 su -c 'ls /home/username' username    # username 用户身份执行 ls 命令列出 /home/username 目录的内容 22.exit 退出当前终端会话或shell exit [n] n(可选):退出状态码。如果指定了状态码,exit 将返回这个状态码。默认情况下,exit 返回上一个命令的退出状态码(通常为 0 表示成功,其他值表示错误)。  23.passwd 修改用户密码 在 Unix 和 Linux 系统中,你可以使用 passwd 命令来更改自己的密码或其他用户的密码(需要管理员权限)。  sudo passwd [options] [username] username(可选):要更改密码的用户。如果省略用户名,passwd 将修改当前用户的密码。 -d:删除用户密码,使用户无法使用密码登录(仅限 root 用户)。 -l:锁定用户账户,禁止用户使用密码登录。 -u:解锁用户账户,允许用户使用密码登录。 -e:强制用户在下次登录时更改密码(即将密码设置为过期状态)。 -i:设置密码过期时间,单位为天。若设置为 0,密码会立即过期。  24.apt 处理软件包的安装、升级、删除和管理 sudo apt update    #更新软件包列表 sudo apt upgrade    #升级已安装的软件包 sudo apt full-upgrade    #升级所有软件包并处理依赖关系 sudo apt install package_name    #安装软件包 sudo apt remove package_name    #卸载软件包 25.finger 显示用户信息 在 Unix 和 Linux 系统中,finger 可以用来查看用户的基本信息、登录状态以及其他与用户相关的细节。  finger [options] [username] finger $USER    #查看当前用户的信息-l:以详细模式显示用户信息。 -s:以简洁模式显示用户信息,只包括基本信息。  26.man 查看命令、函数、配置文件和其他程序文档 man 是 “manual” 的缩写,通过它你可以访问系统的手册页(manual pages),这些手册页提供了详细的使用说明和参考信息。  man [options] command man ls    #查看命令的手册页 1 2 -k:根据关键字搜索手册页。 -f:显示命令或函数的简要说明。 -a:显示所有匹配的手册页,而不仅仅是第一个。 -P pager:指定使用的分页程序。默认是 less,但你可以指定其他分页程序,例如 more。  27.whatis 显示命令或程序的简短描述 whatis 命令依赖于系统的手册页数据库,因此如果系统没有更新数据库,或者手册页没有被正确安装,whatis 可能无法提供描述。 你可以使用 mandb 命令来更新手册页数据库,以确保 whatis 命令能提供最新的描述。  whatis [options] command 1 28.curl 从命令行传输数据 curl 是一个用于从命令行传输数据的工具,支持多种协议,如 HTTP、HTTPS、FTP、SFTP 等。它通常用于下载或上传文件、测试 API、检索网页内容等任务。  curl [options] [URL] 1 -o:将输出保存到文件中。 -O:使用 URL 中的文件名保存文件。 -d:发送 POST 请求时使用的数据。 -H:添加 HTTP 请求头。 -i:显示响应头和响应体。 -I:仅显示响应头。 -L:跟踪重定向。 -x:使用代理服务器。  29.zip 创建和管理压缩文件 zip [options] zipfile files 1 -r:递归压缩目录及其子目录和文件。 -e:为压缩文件添加密码保护。 -u:更新压缩文件,添加新文件或更新已存在的文件。 -d:从压缩文件中删除指定的文件。 -l:列出压缩文件中的内容。 -T:测试压缩文件的完整性。  30.unzip 解压缩zip文件 unzip [options] zipfile 1 -d:指定解压缩到的目标目录。 -l:列出 .zip 文件中的内容。 -t:测试 .zip 文件的完整性。 -u:更新目标文件,仅在目标文件比 .zip 文件中的文件旧时更新。 -o:覆盖现有文件而不提示。  31.less 查看文本文件 less 是一个用于查看文本文件的分页工具,可以逐页或逐行浏览文件内容。它比 more 命令功能更强大,支持在文件中向前和向后滚动、搜索和其他导航功能。  less [options] file 1 -N:显示行号。 -S:禁用自动换行,水平滚动显示长行。 -F:如果内容能在一屏内显示,则自动退出 less。 -X:禁用终端的显示控制(例如颜色),在使用管道时很有用。  32.head 显示文件的开头部分 head用于查看文件的前几行内容  head [options] file head -n 15 file.txt    #查看 file.txt 的前 15 行 1 2 33.tail 显示文件尾部的部分 tail用于查看文件的前几行内容,特别是在查看日志文件时非常有用。  tail [options] file tail -n 15 filename.txt    #指定显示的行数 tail -f filename.txt    #实时查看文件的新增内容(跟随模式) 1 2 3 33.cmp 比较两个文件内容 cmp逐字节比较文件内容,并报告文件之间的第一个不同之处。如果文件相同,则没有输出;如果不同,则输出第一个不同字节的位置和它们的不同内容。  cmp [options] file1 file2 1 file1:第一个要比较的文件。file2:第二个要比较的文件。 -l:显示所有不同字节的位置和它们的不同内容。 -i:忽略文件末尾的空白字符。 -b:显示所有不同字节的位置和它们的不同内容,以十进制显示。 -s:静默模式,不输出任何内容,仅返回退出状态码。0 表示文件相同,1 表示文件不同。 -i:指定从哪个字节开始比较。  34.diff 比较文件内容并显示差异 diff可以显示两个文件之间的不同之处,通常用于文件版本控制和差异分析。  diff [options] file1 file2 1 file1:第一个要比较的文件。file2:第二个要比较的文件。 -u:以统一格式显示差异。 -c:以上下文格式显示差异。 -q:简洁模式,仅指示文件是否不同。 -r:递归比较目录及其内容。 -w:忽略空白字符的差异。 -i:忽略大小写的差异。 -b:忽略行尾的空白字符差异。 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/qq_51870267/article/details/140690986 
  • [技术干货] 【Linux】Linux背景历史-转载
    Linux背景 Linux是什么? Linux(Linux Is Not UniX),一般指GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。  计算机的发展 计算机的发展是随着时代的更替所必须出现的一个产物,1946年2月14日埃尼阿克发明了世界上第一台计算机。在二十世纪五十年代这个时间点,刚刚结束第二次世界大战,进入美苏冷战的是一段对美国和苏联都至关重要的时期,俩个超级大国都极力追求技术突破。而计算机刚刚出现时,并不是让普通平民使用的,而是专属于国家及政府,主要用于军事用途,计算导弹的弹道轨迹。  埃尼阿克1946年2月14日发明第一台计算机 美苏冷战 技术突破 主要用于军事用途 计算导弹的弹道轨迹 摩尔定律:摩尔定律是英特尔创始人之一戈登·摩尔的经验之谈,其核心内容为:集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半。 摩尔定律是内行人摩尔的经验之谈,汉译名为“定律”,但并非自然科学定律,它一定程度揭示了信息技术进步的速度。  推动 摩尔定律 计算机小型化 技术突破 政府和军方想要继续提高实力,就需要继续推动技术进步,为此就必须向研究机构和部分实例雄厚的高效提供资源。  政府和军方 资源 研究机构 高校 产生新的技术后,就可以进行可持续的一个发展,技术人员通过出售自己的技术产权,再通过美国进入行业的兴起(华尔街),通过商人之手,最后就可以孵化出来一批产品:计算机的优化,操作系统等等。  新技术 计算机和操作系统 资源 商人 这样的可持续发展可以给普通群众带来一些伟大的产品,不错的公司以及个人商业人物。同时,可以可持续的发展使得产品逐渐扩大并卖向全球,产生大量相关行业的公司,国家政府通过企业税收、个人税收进行资金回流,如此,形成一个可持续发展的闭环。  unix发展史 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。 1969-1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统。 UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。 第一个UNIX版本是免费给许多知名大学的计算机系使用的。 1972年,贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。伯克莱给系统增加了许多新的特点,后来成为了标准。 1975年伯克莱由下属部门BSD发行了自己的UNIX版本。UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。 1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发行了第一个商业版本。名叫System Ⅲ,后来被成为对商用软件产品良好支持的System Ⅴ所替代。 同时UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的高科技研究机构科研项目的基础。其结果,伯克莱发行了一个叫做BSD Release 4.2的有效版本。 它包括了高级的文件管理器和基于TCP/IP网络协议的网络特点。现在TCP/IP被Internet所使用。BSD Release 4.2被许多厂商所采用,例如SUN Microsystem。 UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运行在哪些版本上比较合适。 到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今天的书店里你能发现分别适用于这两个版本的不同的UNIX的书,一些是System V,另一些集中在BSD UNIX。 AT&T建立了一个叫UNIX系统实验室的新组织,它的作用就是综合UNIX的不同版本,集中开发一个标准系统. 1991年,UNIX综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发行了System V Release 4。为了与System V Release 4 竞争,一些其它公司,如IBM和惠普Open Software Foundation(OSF)去产生自己的UNIX标准版本,继而出现了两个标准商业版本OSF版本和System Release 4. 1993年,AT&T把它的UNIX转卖给Novell公司。UNIX系统实验室成为了Novell的UNIX系统小组的一部分。Novell发行了基于System V Release 4的自己的UNIX版本UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发行Solaris。两个相互竞争的UNIX使用的图形用户界面(一个叫Motif,另一个叫Openlook),已经合并为一个新的工作平台标准,叫做通用平台环境(CDE)。 Linux发展史 1991年10月5日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。Linus仅仅在第一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。 Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne Again Shell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。 Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的。 伴随着计算机的发展,IBM公司是一个主要开发计算机硬件的互联网公司,IBM公司使用unix操作系统,但是起初unix是不被开源的,即是只限于企业、高校和研究机构使用的,而当时的IBM公司产生了一个名为ThinkPad的电脑。 而像微软公司在当时主要是一个开发计算机软件的公司。 当时出现了一家厂商,他们自己开发硬件和属于自己的软件,对其他计算机厂商产生巨大的影响,这家公司就是苹果公司,苹果公司在当时的影响极大,其自身产品引得许多人的购买,其产品质量非常高,价格也比较高。 苹果的崛起对微软的打击是极大的,对于微软这个只是做软件的公司来讲是及其危险的,于是微软和IBM公司先是联合起来开始着手自己的计算机系统,但是后面由于种种原因合作失败。于是微软又和因特尔公司合作,同时也和其他计算机厂商进行合作,产生了windows系统,由于合作厂商较多,导致成本就比较低,所以微软的产品主要是性价比比较高。  现在主流的电脑就是苹果的ios系统和微软的Windows系统,而Linux的使用场景主要是现阶段的Android系统的手机,手机的操作系统还有苹果的ios系统,华为的鸿蒙系统。 VS Windows的发展史。 开源 Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。 GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义,任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码。 Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。 像之前提到过的一样,不仅仅电脑需要操作系统,手机也需要操作系统,互联网公司也需要选择自己的后端操作系统,对于手机而言,操作系统是需要好用、快速、安全以及稳定的;对于互联网公司来讲,其后端操作系统是需要稳定、安全、快速以及成本低廉。  那么一般公司会选择代码开源的操作系统质量会更好(稳定、安全、快速)呢?还是闭源质量会更好呢?  相信历史以及提供了答案,大部分互联网公司会选择像linus这样代码开源的操作系统,由于Linux操作系统的开源,导致了很多专业工程师和世界顶级黑客对其代码的纠正补充,现在Linux开源代码中的代码量以及达到千万级别。  所以Linux的主要特征是:1.开源——大部分是免费的,稳定、安全、高效;2.更多的被专业的人所使用。  Linux官网以及版本更替 Linux现阶段主要有俩个版本: 1.商业化版本: Debian:Debian运行起来极其稳定,这使得它非常适合用于服务器。 debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。 Ubuntu :Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户肯定爱不释手的一款操作系统。 红帽企业级Linux :这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构,包括x86和x86_64。红帽公司通过课程红帽认证系统管理员/红帽认证工程师(RHCSA/RHCE),对系统管理员进行培训和认证。 CentOS :CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。 Fedora :小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。 Kali Linux :Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。 另外一种版本是技术版本:主要被称为Linux的内核、源代码。  源代码官网:链接: link     Linux企业应用现状 Linux在服务器领域的发展 随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政府、金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的扶持力度,Linux服务器产品一定能够冲击更大的服务器市场。 据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。  Linux在桌面领域的发展 近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。  Linux在移动嵌入式领域的发展 Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作系统,据2015年权威部门最新统计,Android操作系统的全球市场份额已达84.6%。 此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了一套基于Linux的操作系统“YunOS”,可用于智能手机、平板电脑和网络电视;常见的数字视频录像机、舞台灯光控制系统等都在逐渐采用定制版本的Linux来实现,而这一切均归功与Linux与开源的力量。  Linux在云计算/大数据领域的发展 互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。  Linux环境的安装 1.裸机安装或者双系统——不推荐 2.虚拟机安装——不推荐 3.云服务器——安装简单,维护成本低,未来学习效果好。  云服务器推荐:阿里云官网,腾讯云官网,华为云官网。 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/dab112/article/details/140348766 
  • [技术干货] Linux:Linux权限解析-转载
    一、Linux下的用户分类  在Linux下,有两种用户,一种是超级用户,一种是普通用户 超级用户:可以再linux系统下做任何事情,不受权限限制(制定规则,但不需要遵守规则) 普通用户:在linux下做有限的事情。(必须遵守相应的规则) 超级用户的命令提示符是“#”,普通用户的命令提示符是“$” 1、用户的切换方式 命令:su [用户名] 功能:切换用户。 例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码。 2、Linux中的所有用户都要有自己的密码,无论是root还是普通用户,并且root的密码和普通用户的密码尽量不要一样!! 3、有些事情只有root可以进行,比如说用yum命令安装软件,但是如果我们普通用户想要去使用root才能使用的命令,那么就需要用sudo command暂时对一条命令进行短暂提权。  4、既然我普通用户可以用sudo对命令按时提权,那么我不就可以相当于root吗??其实这是不合理的,目前我们直接adduser新建的用户,并不可以直接进行sudo,因为系统不信任你,除非未来将普通用户,添加到系统的信任白名单里,才可以用sudo对命令进行提权。 二、Linux权限的概念 什么叫做权限呢??通俗一点说就是一件事情是否允许你做!  2.1 文件访问者的分类(人的不同身份) 文件和文件目录的所有者:u---User(拥有者) 文件和文件目录的所有者所在的组的用户:g---Group(所属组) 其它用户:o---Others (其他人) 思考: 1、 这三个分类和用户有什么关系??? 答:用户相当于是人,而拥有者、所属组、其他人相当于是他们的不同身份,所以任何一个用户都可以是拥有者、所属组或者是其他人。 2、怎么理解拥有者呢?? 答:拥有者就相当于是创建该文件的人,对文件具有相关的操作权限。 3、怎么理解其他人呢?? 答:举个例子,假设张三和李四一起进到腾讯,你们进到了不同的部门,但是由于资金短缺,两个部门共用一台电脑,而腾讯要开发一款叫做王者荣耀的游戏,让你们两个部门都去开发这个游戏,哪个部门开发得好就用谁的(这其实是“赛马论”,虽然大部分的公司都不会让两个部门一起干一件事,因为有点资源浪费,但是在有些公司是会有这种情况的,通过这种方式来给员工们建立一个竞争的环境,激发他们的工作动力,同时不同部门之间也能互相借鉴经验,一起进步。)。所以张三和李四在这条条件下就形成了竞争关系,而两人又在一个寝室,平时李四经常会去借鉴张三的代码,所以有一天当张三写了一段非常好的代码之后(张三属于拥有者),为了不让李四抄袭,就可以对设置其他人的权限(这时李四属于其他人)。 4、为什么会需要所属组呢?? 答:还是刚刚的例子,张三通过设置“其他人”权限,让李四无法抄袭自己的代码,但是有一天他的部门组长王五想看看他写的代码,这个时候张三发现如果放开权限的话,这样李四也能看到自己的代码,所以这个时候就需要“所属组”(王五属于所属组),同时所属组的存在也有利于同个部门之间的成员可以看到相互之间写的代码。 2.2 文件类型和访问权限(事物的不同属性)  2.2.1 文件类型 d:文件夹  -:普通文件(文本、可执行文件、库)  b:块设备文件(例如硬盘、光驱等磁盘文件)       ——>所在路径:/dev/vda1  p:管道文件(用来进行通信)                           ——> 用mkfifo可以创建管道文件 c:字符设备文件(例如键盘、显示器等串口设备)——>所在路径:/dev/tty(tty是终端的意思)   l:软链接(类似Windows的快捷方式) s:套接口文件 2.2.2  Linux后缀无意义但需要 Linux系统中,文件名后缀没有没有直接的意义。  当我们用用gcc文件编译.c文件之后,无论这个可执行程序改成什么名字,都可以正常执行!!  但是不代表Linux系统上运行的其他软件不需要后缀!!比如说gcc是一款编译器、软件,他编译只认.c后缀的文件,如果是其他后缀,他不认。 所以Linux中的文件是否需要使用后缀,具体看用户的需求!!  2.2.3 文件基本权限 i.可读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 ii.可写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 iii.可执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—”表示不具有该项权限  所以2-10位,每三个为一组,分别代表拥有者、所属组、其他人的权限 而每组的对应的位置含义是什么我们是知道的——每个位置对应的是r/w/x或者是- 所以每个位置都有只有是或者否,对应其指定的文件!!因此我们可以用1表示是,0表示否,每组都可以用一个八进制数字来表示。 2.2.4 文件权限的表示方法  a、字符表示方法 b、8进制数值的表示方法  2.2.5 文件访问权限的相关设置方法 1、chmod  功能:设置文件的访问权限  格式:chmod [参数] 权限 文件名  常用选项:  R -> 递归修改目录文件的权限  说明:只有文件的拥有者和root才可以改变文件的权限  chmod命令权限值的格式:  ① 用户表示符+/-=权限字符  (在原有的基础上进行权限的增删查改)  +:向权限范围增加权限代号所表示的权限  -:向权限范围取消权限代号所表示的权限  =:向权限范围赋予权限代号所表示的权限  用户符号:  u:拥有者  g:所属组  o:其它用户  a:所有用户    ②三位8进制数字  (直接对权限进行设置 每个数字分别对应拥有者、所属组、其他人)     2、chown  功能:修改文件的拥有者  格式:chown [参数] 用户名 文件名  注意事项:  我们要把文件给别人时,有两种方法:要么是别人同意,要么是sudo强制提权,而当文件的拥有者改变后,我们只能执行所属组的权限,而不能执行拥有者的权限!且无法再修改权限!!  3、chgrp  功能:修改文件或目录的所属组  格式:chgrp [参数] 用户组名 文件名  常用选项:-R 递归修改文件或目录的所属组  2.2.6 没有权限会怎么样   但是要注意的是,root不受权限约束!!可以随意操作!   2.3 起始权限问题——文件掩码  为什么普通文件是664,而目录文件是775呢??   答:其实普通文件的默认起始权限是666,而目录文件的其实权限是777,而影响他们的其实是文件掩码!!  命令:umask  功能:查看或修改文件掩码(凡是在umask中出现的文件,不会在最终的文件权限中出现!)  格式:umask  权限值(不带权限值就是查看,带的话就是设置)   看上去好像是默认权限减掉起始权限,但其实并不是这样的,因为我们要考虑这个权限本身就不存在的情况!! 所以无论原来的权限是0还是1,当umask为1时,都要变成0(将某位设置为0,我们要想到&)所以有1则为0而umask为0时,就不能影响原来的权限(如果用&,要想不改变,就得希望该位置是0,其他位置是1,所以可以想到~)  最终权限=起始权限&(~umask)  超级用户默认掩码值为0022,普通用户默认为0002。  2.4 目录权限 r:是否允许我们查看指定目录下的文件内容(ls) w:是否允许我们在当前目录下进行创建(mkdir、touch)、更改(mv)、删除(rm) x:可否在目录下执行命令,是否允许用户进入(cd)对应的目录。 注意事项:如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r读权限,而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,即使可以执行ls命令,但仍然没有权限读出目录下的文档。 2.5 共享文件——粘滞位  1、普通用户自己的家目录权限是700,所以在家目录创建的文件,别人都看不到!! 2、所以如果当我们需要一些共享文件让所有用户共享时,我们显然不能将该目录建在家目录下!(要建在根目录下) 但是试想一下这样的场景,你作为共享文件的拥有者,你可以设置权限,当你给其他人设置了不可读不可写的权限,其他人怀恨在心,就把你的文件给删了,这显然是不合理的!!! 3、一个文件能否被删除,与文件本身无关,而与存储该文件的目录有关  但是如果我们不想让别人删除,我们就需要去掉目录的w权限,但是如果这样的话,共享的意义就不存在了!!!因此我们就有了一个新方案叫做粘滞位! 4、粘滞位:给目录进行设置(chmod +t  文件),一般是共享目录,大家可以在目录进行各自文件的增删查改,只允许文件的拥有者或者是root去删除这个文件,其他人一概不允许,t是一种特殊的x权限!!!  5、其实在根目录下就存在一个tmp目录是带粘滞位的,他相当于就是系统自带的共享文件,我们可以在里面去创建共享文件,而不需要每次创建共享文件都在根目录!!  2.6 易错点:每个角色只能执行一种身份的权限!! 假设我是拥有者,我也是所属组,而拥有者的权限是---,所属者的权限是rwx,但实际上我只能以拥有者的身份去执行我的权限!  2.7 file指令  功能说明:辨识文件类型。  语法:file [选项] 文件或目录...   常用选项:  -c 详细显示指令执行过程,便于排错或分析程序执行的情形。  -z 尝试去解读压缩文件的内容 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/weixin_51142926/article/details/140380555 
  • [技术干货] Linux下DNS服务设置详解-转载
    DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,实现了方便用户使用域名访问网站的目的。在Linux操作系统中,DNS服务也是一个重要的组成部分,我们可以使用bind9软件来实现DNS服务。本文将介绍如何在Linux环境下安装并配置bind9,实现主从DNS服务器的搭建。  一、DNS的基本原理  DNS是一种基于UDP协议的分布式数据库服务,它将主机名映射到IP地址。当用户在浏览器中输入一个网址时,计算机会首先向本地DNS服务器发出查询请求,如果本地DNS服务器无法解析该网址,则它会向根DNS服务器发出请求,根DNS服务器会返回负责该顶级域名的权威DNS服务器的地址,本地DNS服务器再向权威DNS服务器发出请求,最终获得该网址对应的IP地址。  二、Linux DNS基本概念 1. 域名:域名是Internet上的一种标识,用于代替IP地址。例如,www.example.com就是一个域名。 2. IP地址:IP地址是Internet上设备的唯一标识,通常以点分十进制表示,如192.168.1.1。 3. DNS服务器:DNS服务器是负责将域名解析为IP地址的服务器。Linux系统中有两种类型的DNS服务器:主DNS服务器和辅助DNS服务器。主DNS服务器负责处理区域内的域名解析请求,而辅助DNS服务器则从主DNS服务器获取区域数据并缓存。 4. 区域:区域是一个DNS命名空间,包含了一组资源记录(Resource Record,RR)。资源记录是DNS数据库中的一条记录,用于存储域名和IP地址之间的映射关系。  三、Linux中的DNS服务  1. BIND软件 BIND(Berkeley Internet Name Domain)是一款实现DNS服务的软件,它是最广泛使用的DNS服务器软件之一。在Linux中,可以使用BIND来实现DNS服务。 2. named服务 named是BIND软件中的一个守护进程,它是Linux中默认安装的DNS服务进程。当启动named服务时,它会读取配置文件/etc/named.conf以及相应的区域文件(zone file),并监听53端口等待客户端的查询请求。 3. 配置文件/etc/named.conf /etc/named.conf是BIND的主配置文件,它包含了全局设置和区域声明等内容。在该文件中可以指定正向查找区域、反向查找区域、主域名服务器、辅助域名服务器等信息。 4. 区域文件 区域文件是BIND中用于存储域名解析信息的文件,它包含了该区域内所有主机的IP地址和主机名之间的映射关系。在Linux中,区域文件通常存放在/var/named目录下。  四、Linux DNS配置 实验环境:Linux操作系统(如CentOS 7)  基本配置步骤: 1.安装dns服务及nslookup所在包bind-utils #  yum  -y  install  bind  bind-utils  2.在主配置文件中设置DNS服务器的全局参数 建立主配置文件named.conf(在listening加服务器ip)  # vi  /etc/named.conf   options  {       listen-on  port 53  {192.168.111.135; };   //本机IP                       directory   "/var/named";                                    allow-query  { 192.168.111.0/24; };       };  3.设置主域名服务器 A:确认本机网络地址、主机映射、DNS服务器地址 # hostname  ns1 # vi  /etc/hosts 192.168.111.135 ns1.qym.com ns1 (确认有类似上面一行内容)    # vi  /etc/resolv.conf  192.168.111.135 (确认有类似上面一行内容)  B:设置区域配置文件 建立正、反向区域数据文件  # vi  /etc/named.rfc1912.zones   zone  "qym.com"  IN  { type  master;                                        file  "qym.com.zone";                              }; zone  "111.168.192.in-addr.arpa"  IN  { type  master; file  "111.168.192.arpa";                              }; 将上面内容输进  C:建立正向解析数据库文件 # vi  /var/named/qym.com.zone   将下面内容输进 $TTL  86400 @   IN  SOA  qym.com.   admin.qym.com.  (         2011030301         4H         30M         12H         1D )     NS    @       A      192.168.111.135 ns1   A       192.168.111.135 www  A      192.168.111.10 mail   A      192.168.111.20   D:建立反向解析数据库文件 # vi  /var/named/111.168.192.arpa   将下面内容输进 $TTL  86400 @  IN   SOA  qym.com.  admin.qym.com.  (          2011030301         4H         30M         12H         1D )          NS      @           A    192.168.111.135 10        PTR  ns1.qym.com. 10        PTR  www.qym.com. 20        PTR  mail.qym.com.     E:启动dns服务 启动named服务,或重载配置  # systemctl  start  named 没有出现错误提示继续往下 F:测试dns 验证主域名服务器  # nslookup  ns1.qym.com 测试成功   # nslookup  www.qym.com    # nslookup  192.168.111.135  通过本实验,学习如何在Linux系统中配置DNS服务器,掌握DNS服务的基本原理和配置方法。 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/2301_82084396/article/details/139649872 
  • [技术干货] linux tomcat版本查看-转载
     在Linux系统中,查看Tomcat服务器版本信息通常有以下几种方法:  方法一:通过version.sh脚本 打开终端:  使用快捷键(通常为Ctrl + Alt + T)或从应用程序菜单中打开终端。 定位到Tomcat安装目录:  在终端中输入以下命令,将路径切换到Tomcat的bin目录,其中<TOMCAT_INSTALL_DIR>代表您的实际Tomcat安装路径(例如:/usr/local/tomcat): bash      cd <TOMCAT_INSTALL_DIR>/bin 3. 执行版本查询脚本:  在终端中输入以下命令并回车,执行version.sh脚本: bash      ./version.sh 脚本执行后,终端将显示Tomcat的版本信息,包括版本号、构建日期等。 方法二:通过catalina.sh脚本 保持在终端: 如果您已经按照方法一打开了终端并定位到了Tomcat的bin目录,可以直接执行下一步;否则,请重复方法一的前两步。 执版本查询命令: 在终端中输入以下命令并回车,执行catalina.sh脚本并传递version参数: bash       ./catalina.sh version 终端将显示Tomcat的版本信息。 方法三:查看MANIFEST.MF文件 打开终端: 如果尚未打开终端,请按照方法一的第一步操作。 定位到Tomcat的lib目录: 输入以下命令切换到Tomcat的lib目录: bash      cd <TOMCAT_INSTALL_DIR>/lib 3. 查看catalina.jar中的MANIFEST.MF文件: 使用以下命令查看catalina.jar包内的MANIFEST.MF文件中的版本信息: bash      unzip -q -c catalina.jar META-INF/MANIFEST.MF | grep -E 'Specification-Version:|Implementation-Version:' 命令执行后,终端将显示Specification-Version:(规范版本)和Implementation-Version:(实现版本)对应的行,它们分别表示Tomcat遵循的规范版本和具体的实现版本。 通过以上任一方法,您都可以在Linux系统中轻松查看已安装的Tomcat服务器版本信息。如果您遇到权限问题无法访问某些文件或执行脚本,请尝试使用sudo命令或以具有足够权限的用户身份登录。 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/zengliguang/article/details/138225839 
  • [技术干货] Linux:Linux发展史-转载
    一、计算机的发展历史背景         首先我们要知道,早期大多数科技的进步都是以国家的对抗为历史背景的,因为一个国家要想强大,只有通过不断提高自己的科技实力,造就更加强大的武器,才能更加从容地立于不败之地。   1.1 第二次世界大战         在第二次世界大战中,敌对双方都使用了飞机和火炮,猛烈轰炸对方军事目标。但要想打得准,必须精确计算并绘制出"射击图表"。经查表确定炮口的角度,才能使射出去的炮弹正中飞行目标!!针对这种情况,在1946年2月14日,第一台电子计算机“埃尼阿克”诞生——>标志着电脑时代的开始。          但在当时,该计算机的操作成本极高(集成化程度极低——>体积大、消耗大)  1.2 美苏冷战和摩尔定律的提出         随着二战的结束,美苏冷战开始爆发(1961-1975),这样的时代背景下促进了技术的极大突破,同时摩尔定律在1965年被提出(当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。这意味着,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。)这说明集成电路的集成化程度越来越高——>推动了计算机小型化的发展。  1.3 硅谷模式的产生 1.3.1 第一阶段  1、政府和军方推动了技术的进步         早期的技术研究更多地是用来针对战争,比如计算机的产生更多的是为了计算导弹的发射路径,并不是为了给大众使用的。所以军方和政府起到了主导作用。   2、政府通过启动资金和研究机构、高校合作推进研究         但是研究新技术,政府和军方并没有专业的研究人员,所以必须依靠和高校和研究机构合作来推动,而项目的运行则需要大量的启动资金。   3、需要大量的启动资金,所以必须想办法“可持续”         但是每个项目都需要大量的资金,所以我们必须想办法“可持续发展”,比如说现在投了一个项目,当这个项目出现研究成果的时候,通过这个研究成果去盈利,来让资金回流继续去投资更多的项目。  4、为了满足“可持续”,有人提出了“硅谷模式”  1.3.2 第二阶段(硅谷模式) 1、政府有需求,就有人会满足(专利的出现)        当政府有相关需求的时候,如果我正好研究了某个东西,那我可以将这个东西卖给政府,政府也就不需要花费时间和金钱去继续研究了,这就是最早的技术专利。——>本质上是减少了研究成本。  2、启动资金+技术人员+商人(商人的出现)         但是光靠减少研究成本并不顶用啊!!所以一些研究并不会去针对政府的需求,而是去针对大众的需求。所以就需要擅长和社会打交道的人,比如说我们创建了一个app,我需要想办法让大众能够去购买和使用他,从而实现盈利,并且还需要根据大众的需求和意见,去不断改进产品,这些过程都需要打交道,所以商人出现了。  3、成立了很多公司,出现很多商业人物(公司的出现)         商人将成果售卖给大众,自然必须要保证大众能够正常的使用,并且还得确保这个东西能够及时地根据不同的意见去维护,这个过程需要相关的技术人员,那既然这样,那就由商人牵头,招募技术人员,所以出现了公司。通过诸如乔布斯、比尔盖茨这样的商业大佬开始出现。  4、孵化新的产品(盈利带动创造力的出现)        公司开始不断盈利,是一个很好的势头,这让他们更加致力于研究面向大众的产品,因此不断的涌现出各种各样针对大众化的新产品。  1.3.3 第三阶段(全球化) 1、产品不断更新,并开始逐渐卖向全球(跨国企业的出现)  2、政府通过税收的方式实现资金回流(税收的出现)  1.4 计算机软硬件的发展 1.IBM公司(硬件)          早期IBM公司的理念是——计算机未来只会给高校和大企业用到。          但是在后期的时候,发明了thinkpad,只不过被联想收购了。  2.苹果公司(硬件+软件)          苹果公司的理念是——计算机是一种大趋势,必然会大众化。          专注研发自己的产品,产品质量很高(主打性能),但是较贵  3.微软公司(软件)          微软只做软件,而苹果的产品如果卖的越多,那么他对应的会是自己的操作系统,所以微软的市场份额本来就有限,他非常担心自己的操作系统会被其他的硬件厂商换掉。  ——>找到IBM合作,但是IBM认为计算机造价高,只会由企业或机构使用,与微软的观念不符合,分道扬镳。  ——>找到因特尔(硬件支持)+大量计算机制造商(联想、华硕等品牌)+微软(软件支持)组成新的阵营。由于各个模块都是专注于自己的事情,所以效率高成本低,但由于阵营太大,所以品控较困难。(主打性价比)。  1.5 图形化界面的出现(转折点)       就这样,几个巨头斗了一段时间,在1979年乔布斯访问了施乐公司发现了图形化界面和鼠标界面,开始让自己的研发团队深入研究,而后微软也开始学习,就此拉开了图形化界面的大趋势。  二、Linux的诞生和发展 2.1 Linux的发展 1.Unix         除了masco和windows,其实在20世纪70年代还有一款商用的操作系统叫做Unix,由IBM公司安装在一体机上,然后交由企业机构去使用,或者是捐赠给高校。  2.雷纳斯托瓦兹        赫尔辛基大学1991年,大学生雷纳斯托瓦兹使用了学校实验室搭载的UNIX操作系统的电脑,开始思考我能否自己开发一款免费的操作系统呢??Liunx(Linux全称:Linux is not unix)应运而生。并将Linux的demo源代码公开。  3.顶级的黑客、工程师、收费操作系统的对抗者愿意无偿参与项目        为什么愿意无偿呢?我的理解其实跟我们平时的志愿者一样,有些事情不一定是拿钱去说话,可能会有各种各样方方面面的原因,而我认为在当时这更多地是一种对计算机从业者的挑战,与大公司巨头挑战的机会。这样使得Linux操作系统越来越强大。  4.Linux更多的是给工程师使用的       为什么Linux操作系统越来越大,但是我们平时看见更多地是windows和mas呢???原因就是因为苹果和微软之所以在图形化界面下大功夫就是为了增加用户体验,让普通老百姓也能更好地区使用计算机,所以Linux更多的是给工程师使用的,他不需要顾忌客户的使用体现,更为原始和高效。  5.苹果系统和安卓系统的出现       苹果开始做手机了,他们有自己的操作系统——>所以谷歌收购了相关产品进行了开源,诞生安卓,安卓是基于Linux内核的手机操作系统。  2.2 Linux操作系统 客户关注点:好用、快、安全、稳定        购买计算机的时候其实操作系统就算在计算机的钱里面,微软是直接从计算机厂商这里拿钱的,那为什么计算机厂商不安装盗版的免费的操作系统呢?因为不安全,如果盗版有任何问题,那么可能直接导致用户连电脑都不打算购买了,大多数客户是不会为操作系统去买单的,不敢对操作系统进行太大的变化,即使换新的操作系统(比如华为从安卓变成鸿蒙) 也要尽可能保持不变,保证用户使用习惯(其实早期的windows会有纸牌、扫雷等游戏,是为了帮助用户培养使用windows的习惯,产生客户粘性)  企业关注点:稳定、安全、快速、成本低         不仅仅是我们的电脑,手机要用操作系统,互联网公司也要选择自己的后端操作系统(服务器,不需要显示器,只需要处理数据)。Liunx操作系统->开源->免费(大众产品在用户体验上不能疏忽,所以互联网公司必须使用微软的操作系统,主要是为了客户的快和好用,但是对于公司内部来说,就更倾向于使用免费的linux而不是微软的操作系统了)——>公司开始广泛使用Liunx(成本低、快速、安全、稳定)  问题1:为什么开源比闭源好的???       稳定——>很多人去看,纠正错误。      安全——>闭源的话我们一旦出问题了看不到底层,找不到解决方案,就不安全,比如一段代码如果我们不清楚逻辑贸然去使用,说不定有病毒,或者窃取数据。      快速——>代码质量越来越好  问题2:为什么Liunx被大多公司使用??  1、服务器需要操作系统永远不关机,而windows连续不关机的话一段时间后就会非常卡。所以Liunx可以适应高强度的使用场景 2、未来越来越多的场景需要操作系统,而当你需要的时候,就有Liunx这个免费好用又安全稳定的操作系统,并且会被不断迭代发展。  问题3:Linux是免费开源的,那Liunx一些网站、一些社区维护不需要钱么??            其实也是需要钱的,当一个软件被大多数人使用的时候,就越不会有人希望这个东西消失,所以会想方设法地保留。免费本身只是一种方式,但是并不是什么都是免费的,也需要维护。   2.3 Linux提炼特征 a.开源-大部分是免费的、稳定的、安全的、高效 b.更多的被专业的人所使用  2.4 Linux的应用场景 1.Linux在服务器领域的发展        随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占 据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政府、 金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的扶持力 度,Linux服务器产品一定能够冲击更大的服务器市场。        据权威部门统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛 起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。  2、Linux在桌面领域的发展        近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得 到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积 累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有一定 的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。 Linux在移动嵌入式领域的发展 Linux的低成本、强大的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目 前Linux以广泛应用于手机、平板电脑、路由器、电视和电子游戏机等领域。  3、Linux在移动设备上广泛使用的          Android操作系统就是创建在Linux内核之上的。目前,Android已经成为全球最流行的智能手机操作系 统,据2015年权威部门最新统计,Android操作系统的全球市场份额已达84.6%。        此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了一套基于Linux的操作系 统“YunOS”,可用于智能手机、平板电脑和网络电视;常见的数字视频录像机、舞台灯光控制系统等都在 逐渐采用定制版本的Linux来实现,而这一切均归功与Linux与开源的力量。  4、Linux在云计算/大数据领域的发展          互联网产业的迅猛发展,促使云计算、大数据产业的形成并快速发展,云计算、大数据作为一个基于开源 软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云 计算、大数据平台的构建,目前,Linux已开始取代Unix成为最受青睐的云计算、大数据平台操作系统。  2.5 Linux版本 a.商业化版本线 (发行版 底层是内核    在内核的基础上搭建自己的生态形成不同的版本  上层的指令有些不同,但如果你把一款用得非常熟,再去使用另一个也是得心应手的 比如安卓也是在Liunx内核上产生的 虽然收费但还是有公司会去使用的,因为本身就没有专门的研发人员,如果出问题了还得自己维护,而用收费的就自然有人会去维护,我们选择Centos7.6/7.8/7.9)  b.技术版本线(源代码版本  Linux内核  xxx.yyy.zzz  x表示主版本,y表示次版本,z表示修正次数) ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 
  • [问题求助] uboot使用do_go_exec无法启动standalone程序?
    各位大佬好:开发需要使用uboot的standalone功能1、当前环境验证使用uboot中example demo预研,编译出的demo.bin通过tftp拷贝到系统0x82000000后,使用go命令成功运行; 2、将demo.bin环境填充到uboot固件新定义的一个.myboot的section中,在uboot启动过程中找到这个段将bin拷贝到0x8200000后,执行do_go_exec()函数,该函数实现就是go命令的实现,但是会存在报错,内容如下: "Synchronous Abort" handler, esr 0x02000000elr: 0000000004918000 lr : 00000000808ae498 (reloc)elr: 0000000084000000 lr : 00000000fff96498x0 : 0000000000000001 x1 : 00000000fddd7b70x2 : 00000000fddd7b70 x3 : 0000000000000000x4 : 00000000840002a8 x5 : 00000000fddd74a8x6 : 0000000000000038 x7 : 000000000000000fx8 : 00000000fddd7b18 x9 : 0000000000000008x10: 00000000ffffffd8 x11: 0000000000000010x12: 000000000000785c x13: 00000000fddd79fcx14: 00000000fddd7bd0 x15: 0000000000000020x16: 0000000084000000 x17: 0000000000000000x18: 00000000fdde7df0 x19: 00000000fff964a8x20: 000000007f6e8000 x21: 00000000fffc07d0x22: 0000000000000000 x23: 0000000000000000x24: 0000000000000000 x25: 0000000000000000x26: 0000000000000000 x27: 0000000000000000x28: 0000000000000000 x29: 00000000fddd7b50 3、自己的排查点: (1)修改do_hikboot运行时机,(1.1)run_main_loop之前;(1.2)在autoboot_command之前,调整启动位置无改善(2)直接调用do_go函数运行,失败,现象一致(3)更换启动地址为0x84000000后无改善,确认0x82000000可以运行,go命令可以启动
  • [技术干货] Linux实现双网卡绑定的代码详解【转】
    一、介绍linux 主机安装双网卡,共享一个IP地址,对外提供访问,实际同样连接两条物理线路到交换机实现平时双网卡同时工作,分流网络压力,同时提供冗余备份,监控,防止物理线路的单点故障。配置双网卡的目的:实现高可用、流量负载均衡实现原理:Linux bonding 驱动模块 提供了一种方法,用以把多个网络接口(network interface)组合成一个 逻辑的 “bonded” 接口。 Bonded 接口的工作方式取决于驱动的模式:不同的模式提供了热备份或负载均衡等不同的服务。几种模式:• 轮询策略(round robin),mode=0,按照设备顺序依次传输数据包,提供负载均衡和容错能力• 主备策略(active-backup),mode=1,只有主网卡处于工作状态,备网卡处于备用状态,主网卡坏掉后备网卡开始工作,提供容错能力• 异或策略(load balancing (xor)),mode=2,根据源MAC地址和目的MAC地址进行异或计算的结果来选择传输设备,提供负载均衡和容错能力• 广播策略(fault-tolerance (broadcast)),mode=3,将所有数据包传输给所有接口通过全部设备来传输所有数据,一个报文会复制两份通过bond下的两个网卡分别发送出去,提供高容错能力• 动态链接聚合(lacp),mode=4,按照802.3ad协议的聚合自动配置来共享相同的传输速度,网卡带宽最高可以翻倍,链路聚合控制协议(LACP)自动通知交换机聚合哪些端口,需要交换机支持 802.3ad协议,提供容错能力• 输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输入数据时则只选定其中一块网卡接收,需要网卡和驱动支持ethtool命令• 输入/输出负载均衡模式(adaptive load balancing),mode=6,输入和输出都实现负载均衡,需要网卡和驱动支持ethtool命令二、步骤1、进入网卡配置目录下:cd /etc/sysconfig/network-scripts/ 2、vim ifcfg-bond0:3、vim ifcfg-ens33:4、vim ifcfg-ens36:5、vim /etc/modprobe.d/dist.conf:12alias bond0 bondingoptions bond0 miimon=100 mode=1 primary=eth0alias bond0 bonding,表示系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0miimon=100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线mode=1,表示绑定模式为1primary=eth0,系统首先eth0作为bond0接口与外界信息的传输接口6、vim /etc/rc.local:1modprobe bonding miimon=100 mode=17、所有配置都已完成,重启网络:12systemctl restart networkifconfig查看信息ifconfig8、检查bonding mode,想查看那个网卡再工作,使用下面这个命令12cat /proc/net/bonding/bond0cat /sys/class/net/bond0/bonding/mode  9、 网卡切换12ifenslave –c bond0 eth0           //测试bonding能否正常切换 Bonding完成后配置全局网关,vi  /etc/sysconfig/network
  • [技术干货] Linux 中的 Shell 脚本编写
    Linux 中的 Shell 脚本编写在 Linux 系统中,Shell 脚本是一种强大的工具,它允许我们将一系列的命令组合起来,实现自动化任务、系统管理和各种复杂的操作。一、Shell 脚本基础1. 什么是 Shell 脚本Shell 脚本是一个包含一系列命令的文本文件,这些命令按照特定的顺序执行。Shell 会读取并解释脚本中的每一行命令。2. 选择 Shell 解释器常见的 Shell 解释器有 bash(Bourne Again Shell)、sh(Bourne Shell)等。通常,我们使用 bash 来编写脚本。脚本的第一行通常指定解释器,例如:#!/bin/bash二、Shell 脚本的结构1. 注释以 # 开头的行是注释,用于解释脚本的功能和代码的作用。2. 变量可以使用 name=value 的形式定义变量,例如:my_variable="Hello World"在使用变量时,使用 $ 符号,如 echo $my_variable 。3. 条件判断使用 if-else 结构进行条件判断,例如:if [ $condition ]; then # 执行的命令 else # 执行的命令 fi4. 循环包括 for 循环、while 循环等。for 循环示例:for item in item1 item2 item3; do # 执行的命令 donewhile 循环示例:while [ $condition ]; do # 执行的命令 done三、常用命令和操作1. 文件操作如 cat 显示文件内容、mkdir 创建目录、rm 删除文件或目录等。2. 进程管理使用 ps 查看进程状态、kill 终止进程等。3. 字符串处理例如,使用 cut 提取字符串的部分内容、sed 进行字符串替换等。四、函数可以在脚本中定义函数来实现代码的复用,例如:function my_function { # 函数体 }五、输入和输出1. 标准输入(stdin)、标准输出(stdout)和标准错误(stderr)可以使用 > 重定向标准输出,2> 重定向标准错误。2. 读取用户输入使用 read 命令获取用户输入的值。六、实际应用示例1. 系统备份脚本定期备份重要的文件和目录。2. 服务器监控脚本监测服务器的资源使用情况,如 CPU 利用率、内存使用等,并发送告警邮件。七、调试技巧使用 -x 选项启用脚本的调试模式,可以查看每一行命令的执行过程和变量的值。编写 Shell 脚本需要不断的实践和积累经验,通过巧妙的运用,可以极大地提高工作效率和系统管理的便利性。
  • [技术干货] Linux 中 SMTP 系统配置
    Linux 中 SMTP 系统配置在 Linux 系统中,配置 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务可以实现邮件的发送和接收功能。这对于服务器的监控告警、系统通知等场景非常有用。一、SMTP 简介SMTP 是用于在网络上发送电子邮件的标准协议。它定义了邮件服务器之间如何相互通信以传递邮件。二、选择 SMTP 服务器软件在 Linux 中有多种 SMTP 服务器软件可供选择,如 Postfix、Sendmail、Exim 等。这里以常见的 Postfix 为例进行配置说明。三、安装 Postfix在大多数 Linux 发行版中,可以使用以下命令安装 Postfix:sudo apt install postfix # 对于基于 Debian 的系统 sudo yum install postfix # 对于基于 Red Hat 的系统四、Postfix 基本配置安装完成后,主要的配置文件位于 /etc/postfix/main.cf 。设置域名myhostname = yourdomain.com将 yourdomain.com 替换为您的实际域名。设置网络接口inet_interfaces = all表示监听所有网络接口。设置邮件来源mydestination = $myhostname, localhost.$mydomain, localhost五、配置邮件转发如果需要将邮件转发到其他邮件服务器,可以进行如下配置:relayhost = [mailserver.example.com]将 [mailserver.example.com] 替换为实际的转发目标服务器地址。六、设置访问控制可以通过配置 /etc/postfix/access 文件来控制哪些主机或网络可以使用此 SMTP 服务器发送邮件。例如,允许特定 IP 地址发送邮件:192.168.1.10 OK然后使用以下命令将其转换为数据库并应用:sudo postmap /etc/postfix/access sudo systemctl restart postfix七、测试 SMTP 配置配置完成后,可以使用以下命令发送测试邮件:echo "This is a test email" | mail -s "Test" recipient@example.com将 recipient@example.com 替换为接收测试邮件的实际邮箱地址。八、常见问题及解决邮件发送失败 检查配置文件中的参数是否正确,特别是域名、转发服务器地址等。被其他邮件服务器拒绝 可能是由于 IP 信誉问题、SPF 记录不正确等,需要检查相关设置。配置 SMTP 系统需要仔细设置各个参数,并根据实际需求进行调整和优化。通过正确配置,可以实现稳定可靠的邮件发送功能。
  • [技术干货] Linux 时钟同步问题解决:NTP 和 Chrony 的使用
    Linux 时钟同步问题解决:NTP 和 Chrony 的使用在 Linux 系统中,保持准确的时钟对于系统的正常运行和各种应用的正确执行至关重要。时钟不同步可能会导致日志记录不准确、认证问题以及依赖时间戳的应用出现异常。本文将介绍如何使用 NTP(Network Time Protocol)和 Chrony 来解决 Linux 系统的时钟同步问题。一、NTP 的使用NTP 是一种广泛使用的网络时间协议,用于在计算机网络中同步系统时钟。安装 NTP 服务在大多数 Linux 发行版中,可以使用以下命令安装 NTP 服务:sudo apt install ntp # 对于基于 Debian 的系统 sudo yum install ntp # 对于基于 Red Hat 的系统配置 NTP 服务安装完成后,需要对 NTP 进行配置。通常,配置文件位于 /etc/ntp.conf 。您可以在配置文件中指定 NTP 服务器的地址。例如:server ntp.example.com这里的 ntp.example.com 应替换为您实际使用的 NTP 服务器地址。启动和启用 NTP 服务安装并配置好后,使用以下命令启动 NTP 服务:sudo systemctl start ntp sudo systemctl enable ntp # 确保在系统启动时自动启动检查时钟同步状态可以使用 ntpq -p 命令来查看与 NTP 服务器的同步状态。二、Chrony 的使用Chrony 是另一种流行的时钟同步工具,具有一些独特的特性和优势。安装 Chrony类似于 NTP,安装 Chrony 可以使用以下命令:sudo apt install chrony # 对于基于 Debian 的系统 sudo yum install chrony # 对于基于 Red Hat 的系统配置 ChronyChrony 的主要配置文件是 /etc/chrony.conf 。您可以在其中添加 NTP 服务器的信息,例如:server ntp.example.com iburstiburst 选项可以加快初始同步速度。启动和启用 Chrony 服务启动服务:sudo systemctl start chrony sudo systemctl enable chrony # 开机自启检查同步状态使用 chronyc sources 命令查看同步源的状态。三、常见问题及解决在时钟同步过程中,可能会遇到一些问题,例如无法连接到 NTP 服务器、同步时间过长等。如果无法连接到服务器,可以检查网络连接、服务器地址是否正确以及防火墙设置。如果同步时间过长,可以尝试更换其他可靠的 NTP 服务器。希望本文能够帮助您在 Linux 系统中顺利解决时钟同步的相关问题,让您的系统始终保持准确的时间。
总条数:1058 到第
上滑加载中