以前可能会用 Rufus、UltraISO 等工具将操作系统 ISO 镜像文件写入 U 盘,制作成可启动的 USB 启动盘;也可能会选择微 PE(WePE)、优启通(EasyU)、FirPE 等 WinPE 制作工具将 U 盘制作成启动盘。 Ventoy 也是一个制作可启动U盘的工具,与众不同的是它只需将 U 盘格式化一次,即可将操作系统 ISO、各种 WinPE,甚至是虚拟磁盘文件(VHD/VHDX)都给一锅给烩了。而且无需换个系统就折腾一次 U 盘,直接把他们拷贝到 U 盘存储区就行。 与传统 USB 启动盘制作相比: 无需重复制作启动盘:传统的启动盘每次只能装载一个操作系统镜像,如果需要更换操作系统,就需要重新制作启动盘。而 Ventoy 则打破了这一限制,它允许你在同一个 U 盘上存放多个操作系统镜像,无需每次都重新制作启动盘。 操作简便:传统启动盘的制作通常需要使用特定的软件,并且制作过程相对复杂。而 Ventoy 则非常简单,只需将 ISO 文件复制到 U 盘即可,无需任何额外的操作。 强大的兼容性:Ventoy 不仅支持 Windows 系列操作系统,还广泛支持各种 Linux 发行版。这意味着无论你使用的是什么操作系统,Ventoy 都能满足你的需求。 智能识别启动方式:无论你的电脑主板使用的是 Legacy BIOS 还是 UEFI 模式,Ventoy 都能自动检测并识别,确保启动的顺利进行。 数据安全可靠:在升级 Ventoy 版本时,用户的数据不会丢失,这意味着你可以放心地进行升级操作,而无需担心数据丢失的风险。 访问 Ventoy 官网(https://www.ventoy.net/)进行下载。 将官网下载好的文件压缩包解压后,点击Ventoy2Disk.exe,选择对应U盘安装即可。 制作好后会出现一个默认以 Ventoy 命名的分区,将下载的系统镜像文件(.iso)或其他 WinPE 工具生成的 ISO 镜像文件拷贝到这个分区就可以用了。 启动界面: 注意:列表中显示什么取决于你往 U 盘里放了什么镜像。 如何做一些额外配置? 通常无需任何配置即可使用,如果想做一些定制化工作,比如修改主题、自动安装系统等。运行 VentoyPlugson.exe,选中刚才制作的 U 盘点“启动”。 会自动打开一个网页: 包含了各种高级配置功能。 有两个配置值得一提:已经默认选择了绕过Windows 11硬件检查(可以绕过 Windows 11 的 TPM 限制)和绕过Windows 11 在线账户需求(可以绕过 Windows 11 有网络时才可以安装的限制...
分类 操作系统 下的文章
Ventoy 启动盘提示 (0x1A) Security Violation 的解决方法
如果你的主板开启了安全启动的话,通过 Ventoy 启动电脑时,你不会看到想要的 Ventoy 选择系统镜像的界面,而是会看到屏幕显示如下提示: ERROR Verification failed: (0x1A) Security Violation 这时还需要一步操作,而这一步就非常麻烦。 这里有三种方法,操作时就看哪一种可用就用哪一种,建议用第2种。 方法1:临时关闭安全启动模式 进入 BIOS,找到安全启动模式,关闭它即可。 等维护完系统再打开它。 方法2:Enroll key from disk 我们先按 ok,然后任意键进入 MOK management: 1、光标选择第二项 enroll key from disk 2、找到 UTOYEFI 这个选项回车 3、找到 ENROLL_THIS_KEY_IN_MOKMANAGER.cer回车 4、选择 continue 回车 5、选择 yes 回车 6、选择 reboot 回车,重启 此时我们可以重新启动电脑就能进入正常的镜像列表了。 方法3:Eeroll hash from disk 我们先按 ok,然后任意键进入 MOK management: 1、光标选择第三项 enroll hash from disk 2、找到 UTOYEFI 这个选项回车 第 1 步先找到第 3 个菜单,也就是最后一个菜单进入,之后再使用方法一的第二步的方法,找到 UTOYEFI 选项回车进入,然后我们再次拍摄屏幕,找到 EFI/ 确定他的位置后回车,然后我们再次拍摄并识别屏幕找到 BOOT/ 一般在菜单的第 2 项也就是最后一项下光标一下就能找到,回车进入之后,我们再次拍摄并识别屏幕找到 grubx64.efi 建议从菜单的最后一项倒着往上数来定位,因为第 1 项的字比较少,可能无法识别,找到这个选项,回车进入后,夏光标找到 continue,回车在下光标找到。Yes,回车,然后重新启动也能正常进入了,每个电脑上仅需操作一次,以后就不需要再操作了。 3、找到 UEFI/ 回车 4、选择 boot/ 回车 5、找到 grubx64.efi 回车 6、选择 continue 回车 7、选择 yes 回车 8、选择 reboot 回车 此时我们可以重新启动电脑就能进入正常的镜像列表...
Linux shell: /bin/sh^M: bad interpreter: No such file or directory
运行 shell 脚本时提示如下错误: /bin/sh^M: bad interpreter: No such file or directory 错误通常是因为文件在 Windows 系统上被创建或编辑,然后在 Linux 或 Unix 系统上执行时出现的问题。这里的 ^M 实际上是 Windows 下的换行符(Carriage Return,CR,\r)在 Linux/Unix 下的显示。 Linux/Unix 系统使用 Line Feed(LF,\n)作为换行符,而 Windows 系统使用 Carriage Return Line Feed(CRLF,\r\n)作为换行符。当你在 Windows 系统上编辑脚本文件,并将其转移到 Linux/Unix 系统上执行时,可能会出现这个问题。 要解决这个问题,你可以使用以下几种方法之一: 在 Linux/Unix 系统上使用 dos2unix 命令转换文件: 如果你的 Linux/Unix 系统上安装了 dos2unix 工具,你可以使用这个命令将文件的换行符从 CRLF 转换为 LF: dos2unix filename 使用 sed 命令删除 \r: 如果你的系统上没有 dos2unix,你也可以使用 sed 命令来删除 \r: sed -i 's/\r$//' filename 在文本编辑器中设置正确的换行符: 如果你在 Windows 系统上编辑文件,确保你的文本编辑器设置为使用 Unix 风格的换行符(LF),而不是 Windows 风格的换行符(CRLF)。许多现代文本编辑器,如 Notepad++、VS Code、Sublime Text 等,都支持这一设置。 在 Linux 上可使用 Vi/Vim 转换: #查看文件格式: :set ff 或 :set fileformat #可以看到如下信息: fileformat=dos #转换为 Unix 格式: :set ff=unix 或 :set fileformat=unix #保存并退出 :wq 使用 Git 进行自动转换: 如果你是通过 Git 在不同系统之间传输文件,你可以在 Git 配置中设置 core.autocrlf 选项,让 Git 在检出和提交时自动转换换行符: git config --global core.autocrlf true 注意:在修改文件之前,最好先备份原始文件,以防万...
Linux time 不是用来看时间的
time 命令不是用来看时间的,主要是用来统计程序执行的时间消耗(CPU 占用),但也可以统计内存、IO 等资源的使用情况。 查看 sleep 命令的用时情况: time sleep 1 real 0m1.002s user 0m0.002s sys 0m0.000s 通常 time 只显示耗时信息,real 是实际用时(从开始执行到结束,包括了自己的 CPU 用时、被阻塞挂起耗时),user 是用户 CPU 用时(执行用户态程序),sys 是系统 CPU 用时(执行内核程序)。CPU 时间 = 用户CPU 时间 + 系统 CPU 时间,real 大于 CPU 时间是因为在执行过程中进程本身休眠、挂起,这些 CPU 时间其他进程在用。 想显示其他资源消耗使用参数 -v (--verbose),但可能提示不存在。原因是 time 可能不止一个。 type -a time time is a shell keyword time is /usr/bin/time time is /bin/time 默认使用的是 shell 关键字(内建命令),不提供 -v。 可以: /usr/bin/time -v sleep 1 Command being timed: "sleep 1" User time (seconds): 0.00 System time (seconds): 0.00 Percent of CPU this job got: 0% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.00 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 2096 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 75 Voluntary context switches: 2 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 或者: \time 或 "time" 或 'time' 或 command time 这样就不使用内建命令...
Linux 目录结构
/usr - 用于存放用户安装的软件和文件的地方。它包含了许多子目录,每个子目录有自己的特定用途。也许有人会认为它是 user 的缩写,但实际上是 Unix System Resources 的缩写,也就是 Unix 操作系统软件资源。所有系统默认的软件都会放置到 /usr 底下,因此这个目录有点类似 Windows 系统的 “C:\Windows\ + C:\Program Files\” 这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 值得注意的是,虽然在一些 Unix 系统上,仍然把 /usr/someone 当做用户家目录,如 Minix,但现代的 /usr 只专门存放各种程序和数据,用户目录已经转移到了 /home。 /usr/bin 中包含用户程序的二进制文件。如果你在 /bin 中找不到用户二进制文件,到 /usr/bin 目录看看。例如:at、awk、cc、less、scp。 /usr/sbin 中包含系统管理员的二进制文件。如果你在 /sbin 中找不到系统二进制文件,到 /usr/sbin 目录看看。例如:atd、cron、sshd、useradd、userdel。 /usr/bin 和 /bin 在 Linux 系统中都用于存放可执行文件,但它们之间存在一些重要的区别。 首先,/bin 目录是所有用户都可以访问并执行的可执行程序,包括超级用户及一般用户。它主要存放一些系统的必备执行档,例如 cat、cp、chmod、df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar 等。 而 /usr/bin 目录则存放一些用户安装的软件的运行脚本,如 c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp 等。这些命令在 Linux 系统里的配置文件脚本里经常用到。 从用户权限的角度来看,/bin 目录下的命令管理员和一般的用户都可以使用,而 /sbin 目录下的命令通常只有管理员才可以运行。 此外,/bin 和 /sbin 目录是在系统启动后挂载到根文件系统中的,所以它们必须和根文件系统在同一分区。而 /usr/bin 和 /usr/sbin 可以和根文件系统不在一个分区。 /usr/lib 中包含了 /usr/bin 和 /usr/sbin 用到的库。 /lib 则是存放 /bin/ 和 /sbin/ 中二进制文件必要的库文件的目录。 /usr/local 中包含了从源安装的用户程序。例如,当你从源安装 Apache,它会在 /usr/local/apache2 中。 /opt - 可选的附加应用程序。 opt 代表可选的。包含从个别厂商的附加应用程序,附加应用程序应该安装在 /opt/ 或者 /opt/ 的子目录下。 /boot - 引导程序文件目录 例如:kernel、initrd。通常是一个单独的分区。 /etc - 配置文件目录 特定主机系统范围内的配置文件。 /dev - 设备目录 设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在 /dev 目录下,对常见设备文件作如下说明: 目录 描述 /dev/hd[a-t] IDE设备 /dev/sd[a-z] SCSI设备 /dev/fd[0-7] 标准软驱 /dev/md[0-31] 软raid设备 /dev/loop[0-7] 本地回环设备 /dev/ram[0-15] 内存 /dev/null 无限数据接收设备,相当于黑洞 /dev/zero 无限零资源 /dev/tty[0-63] 虚拟终端 /dev/ttyS[0-3] 串口 /dev/lp[0-3] 并口 /dev/console 控制台 /dev/fb[0-31] framebuffer /dev/cdrom => /dev/hdc /dev/modem => /dev/ttyS[0-9] /dev/pilot => /dev/ttyS[0-9] /dev/random 随机数设备 /dev/urandom 随机数设备 /proc - 处理信息虚拟文件系统 Linux 系统上的 /proc 目录是一种文件系统,即 proc 文件系统。与其它常见的文件系统不同的是,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。 基于 /proc 文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为 0 字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于 RAM 中)有关。 为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如 /proc/scsi 目录中存储的就是当前系统上所有 SCSI 设备的相关信息,/proc/N 中存储的则是系统当前正在运行的进程的相关信息,其中 N 为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。 大多数虚拟文件可以使用文件查看命令如 cat、more 或者 less 进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如 apm、free、lspci 或 top 查看时却可以有着不错的表现。 /proc/apm 高级电源管理(APM)版本信息及电池相关状态信息,通常由 apm 命令使用; /proc/buddyinfo 用于诊断内存碎片问题的相关信息文件; /proc/cmdline 在启动时传递至内核的相关参数信息,这些信息通常由 lilo 或 grub 等启动管理工具进行传递; # more /proc/cmdline ro root=/dev/VolGroup00/LogVol00 rhgb quiet /proc/cpuinfo 处理器的相关信息的文件; /proc/crypto 系统上已安装的内核使用的密码算法及每个算法的详细信息列表; # more /proc/crypto name : crc32c driver : crc32c-generic module : kernel priority : 0 type : digest blocksize : 32 digestsize : 4 ………… /proc/devices 系统已经加载的所有块设备和字符设备的信息,包含主设备号和设备组(与主设备号对应的设备类型)名; /proc/diskstats 每块磁盘设备的磁盘 I/O 统计信息列表;(内核 2.5.69 以后的版本支持此功能) /proc/dma 每个正在使用且注册的 ISA DMA 通道的信息列表; /proc/execdomains 内核当前支持的执行域(每种操作系统独特“个性”)信息列表; /proc/fb 帧缓冲设备列表文件,包含帧缓冲设备的设备号和相关驱动信息; /proc/filesystems 当前被内核支持的文件系统类型列表文件,被标示为 nodev 的文件系统表示不需要块设备的支持;通常 mount 一个设备时,如果没有指定文件系统类型将通过此文件来决定其所需文件系统的类型; /proc/interrupts X86 或 X86_64 体系架构系统上每个 IRQ 相关的中断号列表;多路处理器平台上每个 CPU 对于每个 I/O 设备均有自己的中断号; /proc/iomem 每个物理设备上的记忆体(RAM 或者 ROM)在系统内存中的映射信息; /proc/ioports 当前正在使用且已经注册过的与物理设备进行通讯的输入-输出端口范围信息列表;如下面所示,第一列表示注册的 I/O 端口范围,其后表示相关的设备; /proc/kallsyms 模块管理工具用来动态链接或绑定可装载模块的符号定义,由内核输出;(内核 2.5.71 以后的版本支持此功能);通常这个文件中的信息量相当大; /proc/kcore 系统使用的物理内存,以 ELF 核心文件(core file)格式存储,其文件大小为已使用的物理内存(RAM)加上 4KB;这个文件用来检查内核数据结构的当前状态,因此,通常由 GBD 通常调试工具使用,但不能使用文件查看命令打开此文件; /proc/kmsg 此文件用来保存由内核输出的信息,通常由 /sbin/klogd 或 /bin/dmsg 等程序使用,不要试图使用查看命令打开此文件; /proc/loadavg 保存关于 CPU 和磁盘 I/O 的负载平均值,其前三列分别表示每 1 秒钟、每 5 秒钟及每 15 秒的负载平均值,类似于 uptime 命令输出的相关信息;第四列是由斜线隔开的两个数值,前者表示当前正由内核调度的实体(进程和线程)的数目,后者表示系统当前存活的内核调度实体的数目;第五列表示此文件被查看前最近一个由内核创建的进程的 PID; /proc/locks 保存当前由内核锁定的文件的相关信息,包含内核内部的调试数据;每个锁定占据一行,且具有一个惟一的编号;如下输出信息中每行的第二列表示当前锁定使用的锁定类别,POSIX 表示目前较新类型的文件锁,由 lockf 系统调用产生,FLOCK 是传统的 UNIX 文件锁,由 flock 系统调用产生;第三列也通常由两种类型,ADVISORY 表示不允许其他用户锁定此文件,但允许读取,MANDATORY 表示此文件锁定期间不允许其他用户任何形式的访问; /proc/mdstat 保存 RAID 相关的多块磁盘的当前状态信息,在没有使用 RAID 机器上,其显示为如下状态: /proc/meminfo 系统中关于当前内存的利用状况等的信息,常由 free 命令使用;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值; /proc/mounts 在内核 2.4.29 版本以前,此文件的内容为系统当前挂载的所有文件系统,在 2.4.19 以后的内核中引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向 /proc/self/mounts(每个进程自身挂载名称空间中的所有挂载点列表)文件的符号链接; /proc/modules 当前装入内核的所有模块名称列表,可以由 lsmod 命令使用,也可以直接查看;如下所示,其中第一列表示模块名,第二列表示此模块占用内存空间大小,第三列表示此模块有多少实例被装入,第四列表示此模块依赖于其它哪些模块,第五列表示此模块的装载状态(Live:已经装入;Loading:正在装入;Unloading:正在卸载),第六列表示此模块在内核内存(kernel memory)中的偏移量; /proc/partitions 块设备每个分区的主设备号(major)和次设备号(minor)等信息,同时包括每个分区所包含的块(block)数目(如下面输出中第三列所示); /proc/pci 内核初始化时发现的所有 PCI 设备及其配置信息列表,其配置信息多为某 PCI 设备相关 IRQ 信息,可读性不高,可以用 “/sbin/lspci –vb” 命令获得较易理解的相关信息;在 2.6 内核以后,此文件已为 /proc/bus/pci 目录及其下的文件代替; /proc/slabinfo 在内核中频繁使用的对象(如 inode、dentry 等)都有自己的 cache,即 slab pool,而 /proc/slabinfo 文件列出了这些对象相关 slap 的信息;详情可以参见内核文档中 slapinfo 的手册页; /proc/stat 实时追踪自系统上次启动以来的多种统计信息;如下所示,其中, “cpu” 行后的八个值分别表示以 1/100(jiffies)秒为单位的统计值(包括系统运行于用户模式、低优先级用户模式,运系统模式、空闲模式、I/O 等待模式的时间等); “intr” 行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数; “ctxt” 给出了自系统启动以来 CPU 发生的上下文交换的次数。 “btime” 给出了从系统启动到现在为止的时间,单位为秒; “processes (total_forks) 自系统启动以来所创建的任务的个数目; “procs_running”:当前运行队列的任务的数目; “procs_blocked”:当前被阻塞的任务的数目; # more /proc/stat cpu 2751 26 5771 266413 2555 99 411 0 cpu0 2751 26 5771 266413 2555 99 411 0 intr 2810179 2780489 67 0 3 3 0 5 0 1 0 0 0 1707 0 0 9620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 427300 btime 1234084100 processes 3491 procs_running 1 procs_blocked 0 /proc/swaps 当前系统上的交换分区及其空间利用信息,如果有多个交换分区的话,则会每个交换分区的信息分别存储于 /proc/swap 目录中的单独文件中,而其优先级数字越低,被使用到的可能性越大;下面是作者系统中只有一个交换分区时的输出信息; # more /proc/swaps Filename Type Size Used Priority /dev/sda8 partition 642560 0 -1 /proc/uptime 系统上次启动以来的运行时间,如下所示,其第一个数字表示系统运行时间,第二个数字表示系统空闲时间,单位是秒; # more /proc/uptime 3809.86 3714.13 /proc/version 当前系统运行的内核版本号,在作者的 RHEL5.3 上还会显示系统安装的 gcc 版本,如下所示; # more /proc/version Linux version 2.6.18-128.el5 ([email]mockbuild@hs20-bc1-5.build.redhat.com[/email]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Wed Dec 17 11:42:39 EST 2008 /proc/vmstat 当前系统虚拟内存的多种统计数据,信息量可能会比较大,这因系统而有所不同,可读性较好; # more /proc/vmstat nr_anon_pages 22270 nr_mapped 8542 nr_file_pages 47706 nr_slab 4720 nr_page_table_pages 897 nr_dirty 21 nr_writeback 0 ………… /proc/zoneinfo 内存区域(zone)的详细信息列表,信息量较大,下面列出的是一个输出片段: # more /proc/zoneinfo Node 0, zone DMA pages free 1208 min 28 low 35 high 42 active 439 inactive 1139 scanned 0 (a: 7 i: 30) spanned 4096 present 4096 nr_anon_pages 192 nr_mapped 141 nr_file_pages 1385 nr_slab 253 nr_page_table_pages 2 nr_dirty 523 nr_writeback 0 nr_unstable 0 nr_bounce 0 protection: (0, 0, 296, 296) pagesets all_unreclaimable: 0 prev_priority: 12 start_pfn: 0 ………… /root - root 用户的家目录 其他用户的家目录通常在 /home/ 下。 /mnt - 挂载目录 临时安装目录,系统管理员可以挂载文件系统。 /media - 可移动媒体设备 用于挂载可移动设备的临时目录。 举例来说,挂载 CD-ROM 的 /media/cdrom,挂载软盘驱动器的 /media/floppy。 /srv - 服务数据 srv 代表服务。 包含服务器特定服务相关的数据。 例如,/srv/cvs 包含 cvs 相关的数据。 /var - 变量文件 这个目录下可以找到内容可能增长的文件。 这包括:系统日志文件(/var/log)、包和数据库文件(/var/lib)、电子邮件(/var/mail)、打印队列(/var/spool)、锁文件(/var/lock)、多次重新启动需要的临时文件(/var/tmp)等 /tmp - 临时文件 包含系统和用户创建的临时文件。当系统重新启动时,这个目录下的文件都将被删除。 /tmp 目录在 Linux 系统中通常使用 tmpfs 文件系统,也就是内存文件系统。tmpfs 允许将一部分内存用作文件系统,可以大大提高文件访问速度,尤其适合存储临时文件。 tmpfs 的优点包括: 速度快:由于 tmpfs 直接使用内存,所以读写速度非常快,特别适合存储临时文件。 节省磁盘空间:由于 tmpfs 直接使用内存,所以不会在磁盘上留下任何数据,可以节省磁盘空间。 安全性高:由于 tmpfs 存储的是临时文件,所以即使系统崩溃或者重启,也不会丢失数据,可以提高系统的安全性。 /lost+found - 文件碎片存储目录 它的主要作用是帮助用户在文件系统发生错误或崩溃时恢复丢失的文件。 当系统意外崩溃或意外关机时,可能会导致一些文件碎片出现在 /lost+found 目录中。这些文件碎片通常是未链接的文件,可能还有一些进程正在使用它们(数据尚未被删除)。在系统启动的过程中,fsck 工具会检查这个目录,并尝试修复已损坏的文件系统。 每个 Linux 文件系统都有一个 /lost+found 目录,当文件系统崩溃时,任何在崩溃过程中损坏的文件都将被放入这个目录中。用户可以尝试在这个目录下查找并恢复这些文件。 值得注意的是,/lost+found 目录通常只有 root 用户可以访问,而且这个目录中的文件通常是未链接的文件,因此恢复过程可能会比较复杂。此外,为了防止数据丢失,建议定期备份重要数据,并保持系统更新和运行状态良...
Linux 命令学习之路:man
我认为学习 Linux 命令,第一个要学的就是 man 命令。 man 命令是 Linux 系统中用于查看系统文档的重要命令,可以用来查看命令的说明、系统调用、库函数等帮助信息。man 命令的全称是 "manual",它是单词 "manual" 的缩写,意思是使用手册。也许有人一开始的时候认为它是“人”的意思,我认为也说得过去,服务于人,人性化,不都是说一个好的系统首先应该是以人为本的吗。 man 命令格式: man [OPTION...] [SECTION] PAGE... man 命令常用参数: -h 显示帮助信息,我认为这是学习每一个命令时首先要会用的参数 -a 显示所有匹配项 -d 输出调试信息,包括查找时的搜索路径等,例如: $ man -d ls ruid=1000, euid=1000 rgid=1000, egid=1000 ++priv_drop_count = 1 From the config file /etc/manpath.config: Mandatory mandir `/usr/man'. Mandatory mandir `/usr/share/man'. Mandatory mandir `/usr/local/share/man'. Path `/bin' mapped to mandir `/usr/share/man'. Path `/usr/bin' mapped to mandir `/usr/share/man'. Path `/sbin' mapped to mandir `/usr/share/man'. Path `/usr/sbin' mapped to mandir `/usr/share/man'. Path `/usr/local/bin' mapped to mandir `/usr/local/man'. Path `/usr/local/bin' mapped to mandir `/usr/local/share/man'. Path `/usr/local/sbin' mapped to mandir `/usr/local/man'. Path `/usr/local/sbin' mapped to mandir `/usr/local/share/man'. Path `/usr/X11R6/bin' mapped to mandir `/usr/X11R6/man'. Path `/usr/bin/X11' mapped to mandir `/usr/X11R6/man'. Path `/usr/games' mapped to mandir `/usr/share/man'. Path `/opt/bin' mapped to mandir `/opt/man'. Path `/opt/sbin' mapped to mandir `/opt/man'. Global mandir `/usr/man', catdir `/var/cache/man/fsstnd'. Global mandir `/usr/share/man', catdir `/var/cache/man'. Global mandir `/usr/local/man', catdir `/var/cache/man/oldlocal'. Global mandir `/usr/local/share/man', catdir `/var/cache/man/local'. Global mandir `/usr/X11R6/man', catdir `/var/cache/man/X11R6'. Global mandir `/opt/man', catdir `/var/cache/man/opt'. Global mandir `/snap/man', catdir `/var/cache/man/snap'. Added sections: `1', `n', `l', `8', `3', `0', `2', `3posix', `3pm', `3perl', `3am', `5', `4', `9', `6', `7'. is a tty using pager as pager path directory /usr/local/sbin is in the config file adding /usr/local/man to manpath adding /usr/local/share/man to manpath path directory /usr/local/bin is in the config file ... -f 等价于 whatis 命令,用于显示给定关键字的简短描述信息。使用 -f 参数时,man 命令会在关键字数据库中搜索与给定关键字相关的命令,并显示该命令的简短描述。 $ man -f ls ls (1) - list directory contents $ whatis ls ls (1) - list directory contents -k 与 apropos 命令等价,用于执行关键字搜索。该参数允许用户在手册页中搜索与给定关键字相关的条目。需要注意的是,由于这是一个模糊搜索,它可能会返回一些并不是你直接想要的结果。在这种情况下,你可以尝试使用更具体的关键字,或者结合其他 man 命令的参数和特性来进一步筛选结果。 $ man -k ls add-shell (8) - add shells to the list of valid login shells arm-linux-gnueabi-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabi-nm (1) - list symbols from object files arm-linux-gnueabi-strip (1) - discard symbols and other data from object files arm-linux-gnueabihf-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabihf-nm (1) - list symbols from object files arm-linux-gnueabihf-strip (1) - discard symbols and other data from object files blockdev (8) - call block device ioctls from the command line c++filt (1) - demangle C++ and Java symbols credentials (7) - process identifiers dircolors (1) - color setup for ls eatmydata (1) - transparently disable fsync() and other data-to-disk synchronization calls EVP_KDF-TLS13_KDF (7ssl) - The TLS 1.3 EVP_KDF implementation EVP_KDF-TLS1_PRF (7ssl) - The TLS1 PRF EVP_KDF implementation false (1) - do nothing, unsuccessfully git-credential (1) - Retrieve and store user credentials git-credential-cache--daemon (1) - Temporarily store user credentials in memory git-credential-store (1) - Helper to store credentials on disk git-difftool (1) - Show changes using common diff tools git-ls-files (1) - Show information about files in the index and the working t -s/-S 用于指定要查看的手册页的章节,也就是命令格式中的 [SECTION]。通过指定章节,您可以限制 man 命令只搜索和显示特定章节的手册页。Linux 的手册页分为多个章节,每个章节包含不同类型的信息: 第1章(1)包含了用户命令和程序,例如 ls、cp 等。 第2章(2)包含了系统调用,例如 open、read 等。 第3章(3)包含了库函数,例如 C 语言的标准库函数。 第4章(4)包含了设备文件和特殊文件。 第5章(5)包含了文件格式和约定,例如 /etc/passwd。 第6章(6)包含了游戏。 第7章(7)包含了惯例和约定。 第8章(8)包含了系统管理命令和守护进程。 第9章(9)包含了内核的函数和宏。 括号中的数字可以帮助用户快速识别手册页的类型和内容。 例如,如果您只想模糊搜索用户命令和程序相关的手册页,可以输入以下命令: $ man -s 1 -k ls(关键字) arm-linux-gnueabi-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabi-nm (1) - list symbols from object files arm-linux-gnueabi-strip (1) - discard symbols and other data from object files arm-linux-gnueabihf-c++filt (1) - demangle C++ and Java symbols arm-linux-gnueabihf-nm (1) - list symbols from object files arm-linux-gnueabihf-strip (1) - discard symbols and other data from object files c++filt (1) - demangle C++ and Java symbols dircolors (1) - color setup for ls eatmydata (1) - transparently disable fsync() and other data-to-disk synchronization calls false (1) - do nothing, unsuccessfully git-credential (1) - Retrieve and store user credentials git-credential-cache--daemon (1) - Temporarily store user credentials in memory git-credential-store (1) - Helper to store credentials on disk git-difftool (1) - Show changes using common diff tools 与上边的实例相比,只输出了第一章节的条目。 -t 用于将手册页内容输出到终端,并使用 troff 命令格式化格式进行显示(默认用的是 groff 输出格式页)。这通常用于在终端中以美观的格式查看手册页,特别是当手册页包含复杂的格式化文本或表格时。可以提供更好的可读性和视觉效果。不过,有可能你使用的终端不支持相应的格式化功能,那就看不到预期的结果了。此外也可以使用其他格式化手段,例如简单地格式化和着色:man ls |col |more -w 显示命令或函数的手册页文件路径 $ man -w ls /usr/share/man/man1/ls.1.gz man 命令的使用非常方便,用户可以通过简单的输入命令和参数来获取需要的帮助信息。在 man 页面中,用户可以使用各种快捷键来快速浏览和查找信息,例如 q 键用于退出,Enter 键按行下翻,Space 键按页下翻,b 键上翻一页等。 man 命令还可以按照默认的搜索路径和顺序去搜索文档,也可以指定 section 来只显示制定 section 的文档页内容。例如,man 5 passwd 和 man passwd 会显示不同的帮助页。 man 命令的文档页文件存放在 /usr/share/man 目录...
Ubuntu 安装 MariaDB 数据库服务
MariaDB 由 MySQL 的创始人 Michael Widenius 主导开发,是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。在存储引擎方面,使用 XtraDB 来代替 MySQL 的 InnoDB。 MariaDB 的 API 和协议兼容 MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用 MySQL 的连接器、库和应用程序也将会在 MariaDB 下工作。 安装 MariaDB: sudo apt install mariadb-server mariadb-client 检查 MariaDB 的状态 systemctl status mariadb 输出: ● mariadb.service - MariaDB 10.6.12 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-12-11 17:13:04 UTC; 59s ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 21940 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 21941 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 21943 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl> Process: 21982 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 21984 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 21972 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 8 (limit: 2220) Memory: 60.8M CPU: 1.084s CGroup: /system.slice/mariadb.service └─21972 /usr/sbin/mariadbd 如果 MariaDB 未处于活动状态,则启动它: systemctl start mariadb 使用以下命令在启动时自动启动 MariaDB: systemctl enable mariadb 数据库安全相关初始化: sudo mysql_secure_installation 交互: NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n #是否切换 unix_socket 身份验证 ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] y #是否更改 root 登录密码 New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y #是否删除匿名用户 ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y #是否禁止 root 远程登录 ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y #是否删除测试数据库 - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y #是否重新加载权限表 ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! 登录 MariaDB: mariadb -u root -p 退出 MariaDB: exit 检查 MariaDB 版本: mariadb --version 输出: mariadb Ver 15.1 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrappe...
Linux 计划任务
在 Linux 系统中,定时任务是自动化和定期执行任务的重要手段。其中,crontab 和 crond 是两个核心概念。 crond crond 是 cron daemon 的缩写,是 Linux 下的一个守护进程,它负责周期性地检查并执行 crontab 中定义的定时任务。换句话说,crontab 定义了任务,而 crond 则负责执行这些任务。 crontab crontab 是 cron table 的缩写,是一个用于设置、维护或检查用户的定时任务的命令。通过编辑 crontab 文件,用户可以指定在特定时间或间隔内要执行的命令或脚本。 基本格式 crontab [选项] 文件名 -e:编辑用户的 crontab 文件; -l:列出用户当前的 crontab 内容; -r:删除用户的 crontab 文件; -i:在删除用户 crontab 文件之前进行确认。 当使用 crontab -e 命令时,系统会打开一个编辑器(通常是 vi 或 nano),供用户编辑或添加新的定时任务。 crontab 格式 每一行代表一个定时任务,格式如下: * * * * * command 分别表示分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、星期(0-7,0 和 7 都代表星期日)和要执行的命令。 关于通配符: *:代表所有可能的值; ,:用于指定多个值; -:用于表示一个范围值; /:用于表示重复的频率。 每次编辑完某个用户的 cron 设置后,cron 自动在 /var/spool/cron 下生成一个与此用户同名的文件,此用户的 cron 信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用 crontab -e 来编辑。cron 启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动 cron 服务。 示例 每 1 分钟执行一次 myCommand * * * * * myCommand 每小时的第 3 和第 15 分钟执行 3,15 * * * * myCommand 在上午 8 点到 11 点的第 3 和第 15 分钟执行 3,15 8-11 * * * myCommand 每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行 3,15 8-11 */2 * * myCommand 每周一上午 8 点到 11 点的第 3 和第 15 分钟执行 3,15 8-11 * * 1 myCommand 每晚的 21:30 重启 smb 30 21 * * * /etc/init.d/smb restart 每月 1、10、22 日的 4 : 45 重启 smb 45 4 1,10,22 * * /etc/init.d/smb restart 每周六、周日的 1 : 10 重启 smb 10 1 * * 6,0 /etc/init.d/smb restart 每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 smb 0,30 18-23 * * * /etc/init.d/smb restart 每星期六的晚上 11 : 00 pm 重启 smb 0 23 * * 6 /etc/init.d/smb restart 每一小时重启 smb 0 */1 * * * /etc/init.d/smb restart 晚上 11 点到早上 7 点之间,每隔一小时重启 smb 0 23-7/1 * * * /etc/init.d/smb restar...
Linux 代理设置
建配置文件 enproxy: export proxy="https://192.168.1.182:33355" export http_proxy=$proxy export https_proxy=$proxy export ftp_proxy=$proxy export no_proxy="localhost, 127.0.0.1, ::1" 建配置文件 disproxy: unset http_proxy unset https_proxy unset ftp_proxy unset no_proxy 用时: source enproxy 不用时: source disprox...