-
Linux 磁盘管理Linux 磁盘管理好坏直接关系到整个系统的性能问题。Linux 磁盘管理常用三个命令为 df、du 和 fdisk。df(英文全称:disk free):列出文件系统的整体磁盘使用量du(英文全称:disk used):检查磁盘空间使用量fdisk:用于磁盘分区dfdf命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。语法:df [-ahikHTm] [目录或文件名]选项与参数:-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k :以 KBytes 的容量显示各文件系统;-m :以 MBytes 的容量显示各文件系统;-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H :以 M=1000K 取代 M=1024K 的进位方式;-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-i :不用硬盘容量,而以 inode 的数量来显示实例 1将系统内所有的文件系统列出来![root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823112 5585444 41% / /dev/hdc3 4956316 141376 4559108 4% /home /dev/hdc1 101086 11126 84741 12% /boot tmpfs 371332 0 371332 0% /dev/shm在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!实例 2将容量结果以易读的容量格式显示出来[root@www ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% / /dev/hdc3 4.8G 139M 4.4G 4% /home /dev/hdc1 99M 11M 83M 12% /boot tmpfs 363M 0 363M 0% /dev/shm实例 3将系统内的所有特殊文件格式及名称都列出来[root@www ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/hdc2 ext3 9920624 3823112 5585444 41% / proc proc 0 0 0 - /proc sysfs sysfs 0 0 0 - /sys devpts devpts 0 0 0 - /dev/pts /dev/hdc3 ext3 4956316 141376 4559108 4% /home /dev/hdc1 ext3 101086 11126 84741 12% /boot tmpfs tmpfs 371332 0 371332 0% /dev/shm none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs实例 4将 /etc 底下的可用的磁盘容量以易读的容量格式显示[root@www ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% /duLinux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。语法:du [-ahskm] 文件或目录名称选项与参数:-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。-h :以人们较易读的容量格式 (G/M) 显示;-s :列出总量而已,而不列出每个各别的目录占用容量;-S :不包括子目录下的总计,与 -s 有点差别。-k :以 KBytes 列出容量显示;-m :以 MBytes 列出容量显示;实例 1只列出当前目录下的所有文件夹容量(包括隐藏文件夹):[root@www ~]# du 8 ./test4 <==每个目录都会列出来 8 ./test2 ....中间省略.... 12 ./.gconfd <==包括隐藏文件的目录 220 . <==这个目录(.)所占用的总量直接输入 du 没有加任何选项时,则 du 会分析当前所在目录里的子目录所占用的硬盘空间。实例 2将文件的容量也列出来[root@www ~]# du -a 12 ./install.log.syslog <==有文件的列表了 8 ./.bash_logout 8 ./test4 8 ./test2 ....中间省略.... 12 ./.gconfd 220 .实例 3检查根目录底下每个目录所占用的容量[root@www ~]# du -sm /* 7 /bin 6 /boot .....中间省略.... 0 /proc .....中间省略.... 1 /tmp 3859 /usr <==系统初期最大就是他了啦! 77 /var通配符 * 来代表每个目录。与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。fdiskfdisk 是 Linux 的磁盘分区表操作工具。语法:fdisk [-l] 装置名称选项与参数:-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。实例 1列出所有分区信息[root@AY120919111755c246621 tmp]# fdisk -l Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/xvda1 * 1 2550 20480000 83 Linux /dev/xvda2 2550 2611 490496 82 Linux swap / Solaris Disk /dev/xvdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x56f40944 Device Boot Start End Blocks Id System /dev/xvdb2 1 2610 20964793+ 83 Linux实例 2找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息[root@www ~]# df / <==注意:重点在找出磁盘文件名而已 Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823168 5585388 41% / [root@www ~]# fdisk /dev/hdc <==仔细看,不要加上数字喔! The number of cylinders for this disk is set to 5005. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): <==等待你的输入!输入 m 后,就会看到底下这些命令介绍Command (m for help): m <== 输入 m 后,就会看到底下这些命令介绍 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition <==删除一个partition l list known partition types m print this menu n add a new partition <==新增一个partition o create a new empty DOS partition table p print the partition table <==在屏幕上显示分割表 q quit without saving changes <==不储存离开fdisk程序 s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit <==将刚刚的动作写入分割表 x extra functionality (experts only)离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。Command (m for help): p <== 这里可以输出目前磁盘的状态 Disk /dev/hdc: 41.1 GB, 41174138880 bytes <==这个磁盘的文件名与容量 255 heads, 63 sectors/track, 5005 cylinders <==磁头、扇区与磁柱大小 Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小 Device Boot Start End Blocks Id System /dev/hdc1 * 1 13 104391 83 Linux /dev/hdc2 14 1288 10241437+ 83 Linux /dev/hdc3 1289 1925 5116702+ 83 Linux /dev/hdc4 1926 5005 24740100 5 Extended /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris # 装置文件名 启动区否 开始磁柱 结束磁柱 1K大小容量 磁盘分区槽内的系统 Command (m for help): q想要不储存离开吗?按下 q 就对了!不要随便按 w 啊!使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。磁盘格式化磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。语法:mkfs [-t 文件系统格式] 装置文件名选项与参数:-t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)实例 1查看 mkfs 支持的文件格式[root@www ~]# mkfs[tab][tab] mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat按下两个[tab],会发现 mkfs 支持的文件格式如上所示。实例 2将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:[root@www ~]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39 (29-May-2006) Filesystem label= <==这里指的是分割槽的名称(label) OS type: Linux Block size=4096 (log=2) <==block 的大小配置为 4K Fragment size=4096 (log=2) 251392 inodes, 502023 blocks <==由此配置决定的inode/block数量 25101 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done <==有日志记录 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!磁盘检验fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。语法:fsck [-t 文件系统] [-ACay] 装置名称选项与参数:-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数-s : 依序一个一个地执行 fsck 的指令来检查-A : 对/etc/fstab 中所有列出来的 分区(partition)做检查-C : 显示完整的检查进度-d : 打印出 e2fsck 的 debug 结果-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行-R : 同时有 -A 条件时,省略 / 不检查-V : 详细显示模式-a : 如果检查有错则自动修复-r : 如果检查有错则由使用者回答是否修复-y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。实例 1查看系统有多少文件系统支持的 fsck 命令:[root@www ~]# fsck[tab][tab] fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat实例 2强制检测 /dev/hdc6 分区:[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。磁盘挂载与卸除Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。磁盘挂载语法:mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点实例 1用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面![root@www ~]# mkdir /mnt/hdc6 [root@www ~]# mount /dev/hdc6 /mnt/hdc6 [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6磁盘卸载命令 umount 语法:umount [-fn] 装置文件名或挂载点选项与参数:-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;-n :不升级 /etc/mtab 情况下卸除。卸载/dev/hdc6[root@www ~]# umount /dev/hdc6
-
Linux 磁盘管理Linux 磁盘管理好坏直接关系到整个系统的性能问题。Linux 磁盘管理常用三个命令为 df、du 和 fdisk。df(英文全称:disk free):列出文件系统的整体磁盘使用量du(英文全称:disk used):检查磁盘空间使用量fdisk:用于磁盘分区dfdf命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。语法:df [-ahikHTm] [目录或文件名]选项与参数:-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k :以 KBytes 的容量显示各文件系统;-m :以 MBytes 的容量显示各文件系统;-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H :以 M=1000K 取代 M=1024K 的进位方式;-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-i :不用硬盘容量,而以 inode 的数量来显示实例 1将系统内所有的文件系统列出来![root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823112 5585444 41% / /dev/hdc3 4956316 141376 4559108 4% /home /dev/hdc1 101086 11126 84741 12% /boot tmpfs 371332 0 371332 0% /dev/shm在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!实例 2将容量结果以易读的容量格式显示出来[root@www ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% / /dev/hdc3 4.8G 139M 4.4G 4% /home /dev/hdc1 99M 11M 83M 12% /boot tmpfs 363M 0 363M 0% /dev/shm实例 3将系统内的所有特殊文件格式及名称都列出来[root@www ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/hdc2 ext3 9920624 3823112 5585444 41% / proc proc 0 0 0 - /proc sysfs sysfs 0 0 0 - /sys devpts devpts 0 0 0 - /dev/pts /dev/hdc3 ext3 4956316 141376 4559108 4% /home /dev/hdc1 ext3 101086 11126 84741 12% /boot tmpfs tmpfs 371332 0 371332 0% /dev/shm none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs实例 4将 /etc 底下的可用的磁盘容量以易读的容量格式显示[root@www ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% /duLinux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。语法:du [-ahskm] 文件或目录名称选项与参数:-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。-h :以人们较易读的容量格式 (G/M) 显示;-s :列出总量而已,而不列出每个各别的目录占用容量;-S :不包括子目录下的总计,与 -s 有点差别。-k :以 KBytes 列出容量显示;-m :以 MBytes 列出容量显示;实例 1只列出当前目录下的所有文件夹容量(包括隐藏文件夹):[root@www ~]# du 8 ./test4 <==每个目录都会列出来 8 ./test2 ....中间省略.... 12 ./.gconfd <==包括隐藏文件的目录 220 . <==这个目录(.)所占用的总量直接输入 du 没有加任何选项时,则 du 会分析当前所在目录里的子目录所占用的硬盘空间。实例 2将文件的容量也列出来[root@www ~]# du -a 12 ./install.log.syslog <==有文件的列表了 8 ./.bash_logout 8 ./test4 8 ./test2 ....中间省略.... 12 ./.gconfd 220 .实例 3检查根目录底下每个目录所占用的容量[root@www ~]# du -sm /* 7 /bin 6 /boot .....中间省略.... 0 /proc .....中间省略.... 1 /tmp 3859 /usr <==系统初期最大就是他了啦! 77 /var通配符 * 来代表每个目录。与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。fdiskfdisk 是 Linux 的磁盘分区表操作工具。语法:fdisk [-l] 装置名称选项与参数:-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。实例 1列出所有分区信息[root@AY120919111755c246621 tmp]# fdisk -l Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/xvda1 * 1 2550 20480000 83 Linux /dev/xvda2 2550 2611 490496 82 Linux swap / Solaris Disk /dev/xvdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x56f40944 Device Boot Start End Blocks Id System /dev/xvdb2 1 2610 20964793+ 83 Linux实例 2找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息[root@www ~]# df / <==注意:重点在找出磁盘文件名而已 Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823168 5585388 41% / [root@www ~]# fdisk /dev/hdc <==仔细看,不要加上数字喔! The number of cylinders for this disk is set to 5005. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): <==等待你的输入!输入 m 后,就会看到底下这些命令介绍Command (m for help): m <== 输入 m 后,就会看到底下这些命令介绍 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition <==删除一个partition l list known partition types m print this menu n add a new partition <==新增一个partition o create a new empty DOS partition table p print the partition table <==在屏幕上显示分割表 q quit without saving changes <==不储存离开fdisk程序 s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit <==将刚刚的动作写入分割表 x extra functionality (experts only)离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。Command (m for help): p <== 这里可以输出目前磁盘的状态 Disk /dev/hdc: 41.1 GB, 41174138880 bytes <==这个磁盘的文件名与容量 255 heads, 63 sectors/track, 5005 cylinders <==磁头、扇区与磁柱大小 Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小 Device Boot Start End Blocks Id System /dev/hdc1 * 1 13 104391 83 Linux /dev/hdc2 14 1288 10241437+ 83 Linux /dev/hdc3 1289 1925 5116702+ 83 Linux /dev/hdc4 1926 5005 24740100 5 Extended /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris # 装置文件名 启动区否 开始磁柱 结束磁柱 1K大小容量 磁盘分区槽内的系统 Command (m for help): q想要不储存离开吗?按下 q 就对了!不要随便按 w 啊!使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。磁盘格式化磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。语法:mkfs [-t 文件系统格式] 装置文件名选项与参数:-t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)实例 1查看 mkfs 支持的文件格式[root@www ~]# mkfs[tab][tab] mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat按下两个[tab],会发现 mkfs 支持的文件格式如上所示。实例 2将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:[root@www ~]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39 (29-May-2006) Filesystem label= <==这里指的是分割槽的名称(label) OS type: Linux Block size=4096 (log=2) <==block 的大小配置为 4K Fragment size=4096 (log=2) 251392 inodes, 502023 blocks <==由此配置决定的inode/block数量 25101 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done <==有日志记录 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!磁盘检验fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。语法:fsck [-t 文件系统] [-ACay] 装置名称选项与参数:-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数-s : 依序一个一个地执行 fsck 的指令来检查-A : 对/etc/fstab 中所有列出来的 分区(partition)做检查-C : 显示完整的检查进度-d : 打印出 e2fsck 的 debug 结果-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行-R : 同时有 -A 条件时,省略 / 不检查-V : 详细显示模式-a : 如果检查有错则自动修复-r : 如果检查有错则由使用者回答是否修复-y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。实例 1查看系统有多少文件系统支持的 fsck 命令:[root@www ~]# fsck[tab][tab] fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat实例 2强制检测 /dev/hdc6 分区:[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。磁盘挂载与卸除Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。磁盘挂载语法:mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点实例 1用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面![root@www ~]# mkdir /mnt/hdc6 [root@www ~]# mount /dev/hdc6 /mnt/hdc6 [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6磁盘卸载命令 umount 语法:umount [-fn] 装置文件名或挂载点选项与参数:-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;-n :不升级 /etc/mtab 情况下卸除。卸载/dev/hdc6[root@www ~]# umount /dev/hdc6
-
Linux 用户和用户组管理Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:用户账号的添加、删除与修改。用户口令的管理。用户组的管理。一、Linux系统用户账号的管理用户账号的管理工作主要涉及到用户账号的添加、修改和删除。添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。1、添加新的用户账号使用useradd命令,其语法如下:useradd 选项 用户名参数说明:选项:-c comment 指定一段注释性描述。-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。-g 用户组 指定用户所属的用户组。-G 用户组,用户组 指定用户所属的附加组。-s Shell文件 指定用户的登录Shell。-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。用户名:指定新账号的登录名。实例1# useradd –d /home/sam -m sam此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。实例2# useradd -s /bin/sh -g group –G adm,root gem此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。这里可能新建组:#groupadd group及groupadd adm增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。2、删除帐号如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:userdel 选项 用户名常用的选项是 -r,它的作用是把用户的主目录一起删除。例如:# userdel -r sam此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。3、修改帐号修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。修改已有用户的信息使用usermod命令,其格式如下:usermod 选项 用户名常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用选项:-l 新用户名这个选项指定一个新的账号,即将原来的用户名改为新的用户名。例如:# usermod -s /bin/ksh -d /home/z –g developer sam此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。4、用户口令的管理用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:passwd 选项 用户名可使用的选项:-l 锁定口令,即禁用账号。-u 口令解锁。-d 使账号无口令。-f 强迫用户下次登录时修改口令。如果默认用户名,则修改当前用户的口令。例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:$ passwd Old password:****** New password:******* Re-enter new password:*******如果是超级用户,可以用下列形式指定任何用户的口令:# passwd sam New password:******* Re-enter new password:*******普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。为用户指定空口令时,执行下列形式的命令:# passwd -d sam此命令将用户 sam 的口令删除,这样用户 sam 下一次登录时,系统就不再允许该用户登录了。passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:# passwd -l sam二、Linux系统用户组的管理每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。1、增加一个新的用户组使用groupadd命令。其格式如下:groupadd 选项 用户组可以使用的选项有:-g GID 指定新用户组的组标识号(GID)。-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。实例1:# groupadd group1此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。实例2:# groupadd -g 101 group2此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。2、如果要删除一个已有的用户组,使用groupdel命令,其格式如下:groupdel 用户组例如:# groupdel group1此命令从系统中删除组group1。3、修改用户组的属性使用groupmod命令。其语法如下:groupmod 选项 用户组常用的选项有:-g GID 为用户组指定新的组标识号。-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。-n新用户组 将用户组的名字改为新名字实例1:# groupmod -g 102 group2此命令将组group2的组标识号修改为102。实例2:# groupmod –g 10000 -n group3 group2此命令将组group2的标识号改为10000,组名修改为group3。4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:$ newgrp root这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。三、与用户账号有关的系统文件完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。下面分别介绍这些文件的内容。1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。它的内容类似下面的例子:# cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/home/sam:/bin/sh从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell1)"用户名"是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。2)“口令”一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。3)“用户标识号”是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。4)“组标识号”字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。5)“注释性描述”字段记录着用户的一些个人情况。例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。6)“主目录”,也就是用户的起始工作目录。它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。8)系统中有一类用户称为伪用户(pseudo users)。这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示:伪 用 户 含 义 bin 拥有可执行的用户命令文件 sys 拥有系统文件 adm 拥有帐户文件 uucp UUCP使用 lp lp或lpd子系统使用 nobody NFS使用拥有帐户文件1、除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志"登录名"是与/etc/passwd文件中的登录名相一致的用户账号"口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。"最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。"最小时间间隔"指的是两次修改口令之间所需的最小天数。"最大时间间隔"指的是口令保持有效的最大天数。"警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。"不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。"失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。下面是/etc/shadow的一个例子:# cat /etc/shadow root:Dnakfw28zf38w:8764:0:168:7::: daemon:*::0:0:::: bin:*::0:0:::: sys:*::0:0:::: adm:*::0:0:::: uucp:*::0:0:::: nuucp:*::0:0:::: auth:*::0:0:::: cron:*::0:0:::: listen:*::0:0:::: lp:*::0:0:::: sam:EkdiSECLWPdSa:9740:0:0::::3、用户组的所有信息都存放在/etc/group文件中。将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:组名:口令:组标识号:组内用户列表"组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。"口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。"组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。"组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。/etc/group文件的一个例子如下:root::0:root bin::2:root,bin sys::3:root,uucp adm::4:root,adm daemon::5:root,daemon lp::7:root,lp users::20:root,sam四、添加批量用户添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户的方法。Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下:(1)先编辑一个文本用户文件。每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:user001::600:100:user:/home/user001:/bin/bash user002::601:100:user:/home/user002:/bin/bash user003::602:100:user:/home/user003:/bin/bash user004::603:100:user:/home/user004:/bin/bash user005::604:100:user:/home/user005:/bin/bash user006::605:100:user:/home/user006:/bin/bash(2)以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户:# newusers < user.txt然后可以执行命令 vipw 或 vi /etc/passwd 检查 /etc/passwd 文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建。(3)执行命令/usr/sbin/pwunconv。将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password 功能。# pwunconv(4)编辑每个用户的密码对照文件。格式为:用户名:密码实例文件 passwd.txt 内容如下:user001:123456 user002:123456 user003:123456 user004:123456 user005:123456 user006:123456(5)以 root 身份执行命令 /usr/sbin/chpasswd。创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏。# chpasswd < passwd.txt(6)确定密码经编码写入/etc/passwd的密码栏后。执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow。# pwconv
-
吐槽 rocm都更新这么多版本了怎么还没有windows的 ~~##RX580用户看过来 rocm4.0版本后就不支持RX580了,垃圾AMD 使用的设备配置 linux:Ubuntu20.04.1 CPU:R9-5900hx GPU:RX6800M 12G python:3.10.6 2022-10-24 23:21:50一键部署工具发布 顺序:1-8-2-3-4-5-7-6 加个源:deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy main 下载链接https://www.123pan.com/s/xW39-dVMmH提取码:2333 安装GPU驱动 如果你已经安装成功了gpu驱动可以跳过 如果之前装过其它版本没有驱动成功的,在终端输入 sudo amdgpu-install --uninstall卸载驱动 访问amd官网下载amdgpu-install_xxxxxx.xxxxxx_all.deb 进入安装包所在的目录 接着在终端输入:sudo apt install ./amdgpu-install_xxxxxxx-xxxxxx_all.deb(注:amdgpu-install_xxxxxxx-xxxxxx_all.deb指的是你下载的amdgpu版本 然后sudo apt update再sudo apt upgrade -y 开始安装驱动 sudo amdgpu-install --no-dkms sudo apt install rocm-dev //安装完后重启 sudo reboot 配置环境 ls -l /dev/dri/render* sudo usermod -a -G render $LOGNAME sudo usermod -a -G video $LOGNAME sudo reboot 测试 # 显示gpu性能监控 rocm-smi #查看显卡信息的两条命令(直接在终端输入) /opt/rocm/bin/rocminfo /opt/rocm/opencl/bin/clinfo #有一条报错可能是没安装好 添加path echo ‘export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin/x86_64’ | sudo tee -a /etc/profile.d/rocm.sh 安装MIopen #安装hip sudo apt-get install miopen-hip #下载miopenkernels,适用与gfx1030的a卡,如果你不是可以试一下 链接:https://www.123pan.com/s/xW39-oyMmH sudo dpkg -i miopenkernels-gfx1030-36kdb_1.1.0.50200-65_amd64.deb RDNA2架构安装pytorch pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.1.1 RX580(gfx803)用户安装这个 pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm3.7 运行stable-diffusion-webui sudo apt install git git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui #一般会提示pip版本太低,更新一下 python -m pip install --upgrade pip wheel pip install -r requirements.txt' -i https://pypi.tuna.tsinghua.edu.cn/simple HSA_OVERRIDE_GFX_VERSION=10.3.0 python launch.py --precision full --no-half #HSA_OVERRIDE_GFX_VERSION可以模拟版本可以填9.0.0或者8.0.3(没试过) //一般来讲会提示没有模型,如果有扔./models/Stable-diffusion里,本文不提供,自行百度 提示cuda错误,解决方法 torch is not able to use gpu #打开launch.py找到这句代码 commandline_args = os.environ.get('COMMANDLINE_ARGS', "") #改成 commandline_args = os.environ.get('COMMANDLINE_ARGS', "--skip-torch-cuda-test") 疑难杂症解决 rocm-gdb依赖libpython3.8解决 进软件和更新——其他软件——添加下面软件源 deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy main 更新一下软件源 sudo apt upgrade sudo apt update 1 2 安装libpython3.8并重新运行amdgpu-install sudo apt install libpython3.8 sudo apt install rocm-dev 1 2 rocm-llvm依赖python但无法安装它 找个目录进行操作 apt download rocm-llvm ar x rocm-llvm_xxxx.xxxxx_amd64.deb tar xf control.tar.xz #编辑文件,如果没有vim将先安装sudo apt install vim vim control #找到如下一行: Depends: python, libc6, libstdc++6|libstdc++8, libstdc++-5-dev|libstdc++-7-dev, libgcc-5-dev|libgcc-7-dev, rocm-core #改为如下内容: Depends: python3, libc6, libstdc++6|libstdc++8, libstdc++-5-dev|libstdc++-7-dev|libstdc++-10-dev, libgcc-5-dev|libgcc-7-dev|libgcc-10-dev, rocm-core #重新打包 tar c postinst prerm control | xz -c > control.tar.xz ar rcs rocm-llvm.deb debian-binary control.tar.xz data.tar.xz #安装前先安装依赖 sudo apt install libstdc++-10-dev libgcc-10-dev rocm-core #安装 sudo dpkg -i rocm-llvm.deb #重新安装驱动 sudo amdgpu-install --no-dkms 运行launch.py时出现语法错误/切换python版本版本 多半是你ubuntu默认python不对应 sudo HSA_OVERRIDE_GFX_VERSION=10.3.0 python launch.py --precision full --no-half 1 #先查看本地安装了多少个python ls /usr/bin/python* #正常来讲会出现一下内容 #/usr/bin/python /usr/bin/python3.10-config /usr/bin/python3-futurize #/usr/bin/python3 /usr/bin/python3.8 /usr/bin/python3-pasteurize #/usr/bin/python3.10 /usr/bin/python3-config #我们要用的是python3.10的,所以 sudo rm /usr/bin/python #删除原来的链接 sudo ln -s /usr/bin/python3.10 /usr/bin/python #创建新的链接 python --version #测试 Can’t run without a checkpoint. Find and place a .ckpt file into any of those locations. The program will exit. 你没有模型,把模型放进/models/Stable-diffusion里面吧(cpkt文件) 安装完驱动重启黑屏 启动的时候选择第二项(recovery模式)后,再选第一项继续进入系统,进来后卸载驱动 运行后下载插件超时 下载插件的速度三取决与年访问github是否流畅,很卡的话就修改launch.py吧 例 gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379") 修改成 gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+ https://ghproxy.com/https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379") GPU看戏(指GPU不工作) 用root环境运行webui吧(没试过) su #输入密码,如果没设置就用sudo passwd root设置密码 HSA_OVERRIDE_GFX_VERSION=10.3.0 python launch.py --precision full --no-half #HSA_OVERRIDE_GFX_VERSION可以模拟版本可以填9.0.0或者8.0.3(没试过) 愉快玩耍 进webui目录执行以下操作 HSA_OVERRIDE_GFX_VERSION=10.3.0 python launch.py --precision full --no-half 1 如果运行时出现什么hip错误找不到gfx1030或者其他版号的可以不用管,等待一会就可以了,后面生成就不会提示,(每次启动第一次运行都会这样) 显卡监控(选装) sudo apt install radeontop radeontop ———————————————— 版权声明:本文为CSDN博主「晓舟 XiaozhouTAT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_44948500/article/details/127346390
-
随着板卡芯片不断更新,操作系统中的驱动可能不支持新的芯片,所以需要升级驱动。在所有的硬件中,raid卡驱动是一种比较特殊的驱动,如果操作系统不支持raid卡,在安装系统过程中就无法识别raid卡下的硬盘,导致系统无法正常安装。这种情况下,我们可以通过制作raid卡驱动镜像文件,辅助升级系统驱动,达到安装系统的目的。本文主要以raid卡驱动megaraid_sas为例。1. 安装依赖软件包dnf install -y tar rpm-build createrepo genisoimage2. 下载驱动包,进行解压wget cid:link_0tar -xf MR_LINUX_DRIVER_7.22-07.722.02.00-2.tgz3. 进入源码包目录,安装驱动源码包cd kmod_srpm/rpm -ivh kmod-megaraid_sas-07.722.02.00-2.src.rpm4. 查看 megaraid_sas.spec 文件ls -l /root/rpmbuild/SPECS/megaraid_sas.spec5. 编译spec文件,生成驱动rpm包 【注意:编译环境和架构要求和待安装操作系统相同】rpmbuild -ba /root/rpmbuild/SPECS/megaraid_sas.spec6. 创建制作目录,将编译好的驱动软件包复制到目录下 mkdir -p driver/rpms/aarch64 cp /root/rpmbuild/RPMS/aarch64/kmod-megaraid_sas-07.722.02.00-2.aarch64.rpm driver/rpms/aarch64/ cp /root/rpmbuild/RPMS/aarch64/kmod-megaraid_sas-07.722.02.00-2.aarch64.rpm driver7. 创建rhdd3文件echo "Driver Update Disk version 3" > driver/rhdd3 8. 使用createrepo命令创建repodatacreaterepo --pretty driver/rpms/aarch64/createrepo --pretty driver9. 制作驱动镜像文件mkisofs -R -V "Driver" -o megaraid_sas.iso driver10. 验证驱动镜像文件 驱动镜像文件可以被正常挂载识别
smart_bubble
发表于2022-11-14 16:48:24
2022-11-14 16:48:24
最后回复
举世创举@openEuler
2023-01-16 15:52:52
1999 1 -
在centos7,RTC支持参数wakealarm(/sys/class/rtc/rtc0/wakealarm),可设置定时开关机。但是鲲鹏的/sys/class/rtc/rtc0/下没有wakealarm参数,是否不支持?
-
环境信息服务器型号:Taishan200 2280操作系统版本:openEuler 20.03LTS SP3架构:aarch64RAID卡型号: 9560-8i(SAS3908)磁盘阵列卡驱动更新流程1. 构建megaraid_sas驱动镜像文件驱动镜像文件构建方式请参考《openEuler 制作驱动镜像文件》2. 在服务器上挂载系统镜像文件3. 启动服务器,在进入安装选择界面时,选择”Install openEuler 20.03-LTS-SP3”,键盘按“e”进入grub配置界面,修改grub配置,添加“linux dd”,然后使用ctrl+x进入安装4. 进入dd交互模式,弹出系统镜像文件,插入驱动镜像文件5. 更新驱动,先输入”r”刷新镜像文件信息,输入“1”回车,可看到挂载的驱动镜像6. 升级驱动输入“1”回车选择驱动,再输入“c”回车升级驱动7. 升级完成后,弹出驱动镜像文件,挂载系统镜像文件,继续安装系统先输入”r”刷新镜像文件信息,出现系统镜像文件信息后,输入”c”继续安装系统8. 进行系统安装配置,选择硬盘、配置网络9. 完成配置后安装系统10. 重启进入openEuler 20.03LTS SP3
smart_bubble
发表于2022-10-29 11:20:17
2022-10-29 11:20:17
最后回复
yd_244680778
2022-12-13 13:15:56
1283 1 -
1.官网下载驱动源码包地址:https://www.intel.com/content/www/us/en/download/18026/intel-network-adapter-driver-for-pcie-40-gigabit-ethernet-network-connections-under-linux.html环境 openeuler22.03-LTS x86 aarch642.tar -xvf i40e-2.20.12.tar.gz3.把附件中的文件替换解压出来的文件路径 i40e_ethtool.c i40e-2.20.12/src/auxiliary_bus.h i40e-2.20.12/src/linux4.cd i40e-2.20.12/src/5.make install
-
intel ice驱动1.9.11 版本在openeuler20.03-LTS-SP3 aarch64无法直接编译安装,需要按照以下步骤操作环境 openeuler20.03-LTS-SP3 aarch641.intel官网下载驱动链接:https://downloadmirror.intel.com/738725/ice-1.9.11.tar.gz2.解压软件包tar -xvf ice-1.9.11.tar.gz3.cd ice-1.9.11/src替换这个文件(文件在附件中)ice_ptp.c 路径 ice-1.9.11/src4.cd ice-1.9.11/src5.make install6.查看新驱动 modinfo ice|more
-
华为开源镜像站的Ubuntu镜像界面里sources.list文件的更新是通过sed工具实现如果之前对官方sources.list进行过修改,比如改成过阿里云镜像站、清华镜像站,则sed工具操作会失败建议直接将包含华为镜像站连接的sources.list内容放出来,用户只需进行复制粘贴即可完成更新
-
rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。下面为一些常见的错误及解决方法问题1@ERROR: auth failed on module teersync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]解决方法服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。提供正确的用户名密码解决此问题。问题2@ERROR: Unknown module ‘tee_nonexists'rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]解决方法服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。问题3rsync: write failed on "/home/backup2010/wensong": No space left on device (28)rsync error: error in file IO (code 11) at receiver.c(302) [receiver=3.0.7]rsync: connection unexpectedly closed (2721 bytes received so far) [generator]rsync error: error in rsync protocol data stream (code 12) at io.c(601) [generator=3.0.7]解决方法磁盘空间不够,所以无法操作。可以通过df /home/backup2010 来查看可用空间和已用空间问题4password file must not be other-accessiblecontinuing without password filePassword:解决方法:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd问题5rsync: read error: Connection reset by peer (104)rsync error: error in rsync protocol data stream (code 12) at io.c(604) [sender=2.6.9]解决方法:原数据目录里没有数据存在
-
基础知识分享:vim编辑器的三种模式:一般模式、编辑模式和命令行模式。在一般模式中可以进行删除、复制和粘贴的功能,但是无法编辑文件内容。从一般模式切换到编辑模式可以按下i、I、o、O、a、A、r、R键。按下Esc键可以回到一般模式。在一般模式中输入:、/、?三个中的任意一个可以将光标移到最下面的一行。在这个模式中可以提供查找数据的操作,而读取、保存、大量替换字符、离开vii、显示行号等操作则是在此模式中完成的。需要注意的是,编辑模式与命令行模式之间是不能互相切换的。下面列出平时用的最多的vi命令:移动光标的方法:[Ctrl]+[f]:屏幕向下移动一页,相当于[PageDown]按键。[Ctrl]+[b]:屏幕向上移动一页,相当于[PageUp]按键。0或功能键[Home]:移动到这一行的最前面字符处。$或功能键[End]:移动到这一行的最后面字符处。G:移动到这个文件的最后一行。gg:移动到这个文件的第一行,相当于1G.N[Enter]:N为数字,光标向下移动N行。查找和替换:/word:向下寻找一个名称为word的字符串。?word:向上寻找一个名称为word的字符串。:n1,n2s/word1/word2/g:在第n1行和n2行之间寻找word1这个字符串,并且将其替换为word2.:1,$s/word1/word2/g:从第一行到最后一行寻找word1这个字符串,并且将其替换为word2.:1,$s/word1/word2/gc:从第一行到最后一行寻找word1这个字符串,并且将其替换为word2.且在替换前显示提示字符给用户确认是否需要替换。删除、复制和粘贴:x,X:在一行字中,x为向后删除一个字符(相当于[Del]键),X为向前删除一个字符(相当于[Backspace])。dd:删除光标所在的一整行。ndd:删除光标所在的向下n行。yy:复制光标所在的一行。nyy:复制光标所在的向下n行。p,P:p为将已复制的内容在光标的下一行粘贴,P则为粘贴在光标的上一行。u:复原前一个操作。[Ctrl]+r:重做上一个操作。.:小数点,重复前一个操作。一般模式切换到编辑模式:i,I:进入插入模式,i为从目前光标所在处插入。I为在目前所在行的第一个非空格字符处开始插入。a,A:进入插入模式。a为从目前光标所在处的下一个字符处开始插入。A为从所在行的最后一个字符处开始插入。o,O:进入插入模式。o为在下一行插入。O为在上一行插入。r,R:进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键。一般模式切换到命令行::w:将编辑的数据写入到硬盘中。:q:离开vi.后面加!为强制离开。:wq:保存后离开。:wq!为强制保存后离开。vim常用的环境设置参数命令如下::set nu 设置行号:set nonu 取消行号:set hlsearch 设置高亮度查找:set nohlsearch 取消高亮度查找:set backup 自动备份文件:setruler 开启右下角状态栏说明:set showmode 显示左下角的INSERT之类的状态栏:set backspace={0,1,2} 设置退格键功能。为2时可以删任意字符。为0或1时仅可以删除刚才输入的字符。:set all 显示目前所有的环境参数值:set 显示与系统默认值不同的参数值:syntax on/off 是否开启依据相关程序语法显示不同的颜色:set bg=dark/light 是否显示不同的颜色色调Redfish patch使用1、先使用get获取到需要修改信息的地方的ETag2、获取到ETag后,在headers上添加if-Mathch和Content-Type 两个KEY3、添加两个KEY后还需在body-->raw 添加你所需修改的信息4、编辑完成后点击send,然后再查看原信息是否修改成功
-
1.Linux中的使用场景我们在项目开发中,再编写好一个功能的接口后,可以通过postman或者apifox等可视化的工具来进行调用调试,但是我们也经常会碰到本地是无法访问服务器的情况(部署在内网等环境),这时候如果想要调用服务器上的接口方法,就需要在Linux环境下进行调用了,我们可以通过curl指令完成这一步的调用,本文中就对curl指令调用接口进行简单的归纳和总结。2.curl命令的简介curl是非常实用的命令行工具,它有这非常丰富的参数,使用curl命令可以用来完成与服务器之间的数据传输。我们可以根据需求的不同,添加对应的自带参数来完成我们想要的不同的效果。在Linux环境中使用curl命令进行接口测试,其实是利用curl对http协议发送Get或者Post或者Delete或者Put请求,同时还可以携带header头部信息来满足接口的特殊需求。 3.curl命令的语法和参数curl命令的语法是:curl[options] [URL…] curl命令的常用参数有:-X/–request [GET|POST|PUT|DELETE|…] 使用指定的http method发出 http request -H/–header 设定request里的header -i/–include 显示response的header -d/–data 设定 http parameters -v/–verbose 输出比较多的信息 -u/–user 使用者账号 -b/–cookie 使用cookie -k/–insecure 允许忽略证书进行 SSL 连接 还有很多参数本文中没有列举出来可以通过在Linux中执行“man curl”命令查看更多的参数描述或者访问官网链接https://curl.se/docs/manpage.html 进行查看。4.curl命令的使用4.1 get请求get请求,不带参数只会显示网页信息,用我们熟悉的百度来进行测试 调用curl的get命令curl http://www.baidu.com获取百度的网页信息 get请求,增加“-i”参数,用来显示页面内容和头部信息,调用curl指令为:curl -i http://www.baidu.com,很明显跟上面比起来多出了头部的信息,并且还显示出了网页的信息。get请求,带上“-I"或”–head"参数,用来仅仅显示请求头部信息,调用指令为curl -I http://www.baidu.com或者curl --head http://www.baidu.com,调用结果仅仅显示了头部信息,并没有显示网页信息等其他的东西,两种指令的调用结果都是一样的。通过“-v"或”–verbose"参数来显示http请求的通信过程,调用指令为curl -v http://www.baidu.com,调用结果显示出了通信的过程以及网页的信息。通过“-X"或”–request"参数可以发送指定请求,调用的指令为curl -X GET http://xxx/调用的get接口或者curl --request GET http://xx/调用的get接口,通过这种方法可以实现Linux中的Get方法的调用。还可以通过“-H"或”–header"参数来指定头部信息,调用指令为curl -H “xxx” http://www.baidu.com。post请求,通过-d”参数可以指定发送的请求参数,调用指令为curl -d ‘参数1=值1’ -d ‘参数2=值2’-X POST http://xxx/需要调用的接口,在使用-d情况下,默认为发送post请求,并且可以省略不写-X POST 刚刚的指令就可以改为curl -d ‘参数1=值1’ -d ‘参数2=值2 http://xxx/需要调用的接口。以上就是Linux中CURL的简单使用。
-
9 月 12 日,PyTorch 和 Linux 基金会双双在自家的官网宣布,PyTorch 已经正式加入 Linux 基金会的消息。PyTorch 最初由 Meta 的 AI 团队孵化,在以社区为中心的管理之下,PyTorch 现已发展成为一个由贡献者和用户组成的庞大社区。截至 2022 年 8 月,PyTorch 是世界上与 Linux 内核和 Kubernetes 并列的五个增长最快的开源软件社区之一。从 2021 年 8 月到 2022 年 8 月,PyTorch 统计了超过 6.5 万次提交. 超过 2400 名贡献者以提交问题或 PR 或编写文档的方式参与了这项工作。这些数字使 PyTorch 成为历史上最成功的开源项目之一。“很高兴 Linux 基金会将成为我们的新家,因为他们在支持像我们这样的大型开源项目(例如 Kubernetes 和 NodeJS)方面拥有丰富的经验。”PyTorch 联合创始人 Soumith Chintala 称。“PyTorch 通过良好的维护和开源社区管理达到了目前的状态。我们不会改变 PyTorch 的任何优点。”Linux 基金会称。“PyTorch 将通过加入 Linux 基金会加强其治理。”PyTorch 联合创始人 Soumith Chintala 称。PyTorch 是 Facebook 开发的用于训练神经网络的 Python 包,也是 Facebook 倾力打造的首选深度学习框架。在 2017 年 1 月首次推出,Facebook 人工智能研究院(FAIR)在 GitHub 上开源了 PyTorch,迅速占领了 GitHub 热度榜榜首。Facebook 用 Python 重写了基于 Lua 语言的深度学习库 Torch,不仅使得 PyTorch 继承了 Torch 灵活、动态的编程环境和用户友好的界面,支持以快速和灵活的方式构建动态神经网络,还允许在训练过程中快速更改代码而不妨碍其性能,即支持动态图形等尖端 AI 模型的能力。2018 年 Caffe2 正式并入 PyTorch 后,PyTorch 的发展势头更呈不可阻挡之势。据 Meta 称,自 PyTorch 创建以来,约有 2,400 名贡献者在该框架上构建了超过 150,000 个项目。因此,PyTorch 已成为人工智能研究和商业生产使用的领先平台之一,包括作为亚马逊网络服务、微软 Azure 和 OpenAI 的技术基础。 在人工智能和机器学习领域,开源是重中之重。Linux 基金会是开源生态系统的一个重要组成部分。目前,Linux 基金会在世界各地拥有数千名成员,拥有 850 多个开源项目。这些项目要么直接为基础 AI/ML 项目(LF AI 和数据)做出贡献,要么为其用例做出贡献并与其平台集成。(例如,LF Networking、AGL、Delta Lake、RISC-V、CNCF、Hyperledger)。“PyTorch 的精髓之处(以及它的维护者的功劳)在于,它的确是如今许多 AI 和 ML 项目的基础平台,它是一把真正的瑞士军刀。”Linux 基金会称。正如开发人员在 Linux 之上构建了我们今天所知的大量技术一样,许多 AI/ML 社区也是在 PyTorch 之上构建而成。PyTorch 进一步支持了新兴技术和不断变化的用户需求。Linux 基金会表示,作为 Linux 基金会的一部分,PyTorch 及其社区将受益于我们的许多计划和支持社区,例如培训和认证计划(我们已经在进行中)、社区研究(例如我们的项目旅程报告),当然还有其他社区活动等。PyTorch 社区将在 Linux 基金会内部和周围工作,PyTorch 社区也有一个可以访问 LFX 协作门户的入口,我们将为 PyTorch 社区提供指导并帮助 PyTorch 社区确定未来的领导者、寻找潜在的员工、并观察共享的社区动态。“像 PyTorch 这样有可能成为关键技术基础平台的项目,保持中立对它更有益处。中立性和真正的社区所有权使 Linux 和 Kubernetes 在变得更加成熟的同时继续加速和增长,从而超越预期。用户、维护者和社区开始将它们视为可以永久依赖和信任的公共资源的。”Linux 基金会称。“PyTorch 通过良好的维护和开源社区管理达到了目前的状态。我们不会改变 PyTorch 的任何优点。”Linux 基金会称。来源:https://pytorch.org/blog/PyTorchfoundation/https://venturebeat.com/ai/pytorch-has-a-new-home-meta-announces-independent-foundation/https://linuxfoundation.org/zh/blog/welcoming-pytorch-to-the-linux-foundation/
-
摘要:我们可以对这个 bash 补全进行加速,并使用 complete 命令将其提升到一个新的水平。本文分享自华为云社区《有用的 Linux Bash_Completion 命令示例(Steroids 上的 Bash 命令行补全)》,作者:Tiamo_T 。在 Linux 中,在键入命令时,如果按两次 TAB,它将列出所有以键入字符开头的可用命令。这不是什么新鲜事,可能你已经知道了。此功能称为 bash 完成。默认情况下,基本文件和目录名称补全在 bash 命令行中可用。但是,我们可以对这个 bash 补全进行加速,并使用 complete 命令将其提升到一个新的水平。本教程解释了我们如何使用可编程完成将自动完成应用于选项和命令的参数。例如,在输入 write 命令后,如果按两次 tab,自动补全会提供用户列表来执行 write 操作。$ write [TAB][TAB] bala raj jason randy john ritu mayla thomas nisha www-data在以下示例中,它将显示 telnet 命令的可用主机名:$ telnet [TAB][TAB] localhost dev-db fileserver要在终端中获得可编程完成,您只需要运行 /etc/bash_completion ,如下所示,# . /etc/bash_completion您还可以取消注释 /etc/bash.bashrc(来自 ubuntu linux 13.04)中的以下行,这样您就不必显式运行上述命令, enable bash completion in interactive shells if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi如果你没有找到这些行和 /etc/bash_completion 文件,那么你只需要通过apt-get安装名为 bash_completion 的包1.查看现有的bash-completion启用可编程 bash 完成后,定义了一组 bash 完成。命令 complete 用于定义 bash 完成。要查看现有的 bash 完成,请使用如下所示的 complete 命令。 complete -p | less在上面的示例中,选项 -p 是可选的。2. Bash 标准补全列表Bash 默认为 Linux 用户提供以下标准补全。变量名完成用户名完成主机名完成路径名完成文件名完成我们在之前的bash 标准完成文章中讨论了这些内容。3. 定义获取命令的完成使用 -c 命令定义完成以获取可用命令列表作为参数。在以下示例中,完成是为哪个命令定义的,$ complete -c which $ which [TAB][TAB] Display all 2116 possibilities? (y or n)如上所示,通过按“y”,所有命令将被列出。4. 定义获取目录的完成使用选项 d,可以将完成定义为仅获取目录名称作为参数。在以下示例中,为 ls 定义了完成,$ ls countfiles.sh dir1/ dir2/ dir3/ $ complete -d ls $ ls [TAB][TAB] dir1/ dir2/ dir3/如上所示,按 Tab 仅显示目录。5. 定义获取后台作业名称的完成使用完成,还可以获取作业名称作为命令的参数。选项 j 用于将作业名称作为参数传递给命令作业,如下所示,$ jobs [1]- Stopped cat [2]+ Stopped sed 'p' $ complete -j ./list_job_attrib.sh $ ./list_job_attrib.sh [TAB][TAB] cat sed谈到后台作业,您还应该知道如何使用这些示例管理Linux 后台作业。6. 前缀和后缀补全可以使用要添加的所需前缀和要附加实际完成的后缀来定义完成。在以下示例中,为 list_job_attrib.sh 定义了前缀和后缀,$ jobs [1]+ Stopped cat $ complete -P '">' -S '<"' ./list_job_attrib.sh $ ./list_job_attrib.sh [TAB][TAB] $ ./list_job_attrib.sh ">cat<"7. 文件名和目录完成与排除考虑脚本完成运行,输出被写入输出目录,如下所示$ cd output/ $ ls all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt parser_mod.tmp extract.o在上面,如果您需要忽略 .tmp 和 .o 文件以使用 ls 命令自动完成,那么,$ export FIGNORE='.tmp:.o' $ complete -f -d ls $ cd output $ ls [TAB][TAB] all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txtFIGNORE 是包含文件名后缀的 shell 变量,这些后缀在自动完成中被排除。8. 通过 IFS 拆分字符串以获得完成值可以使用 -W 选项提及单词列表,并使用 IFS 变量中的值进行拆分。然后每个结果单词都被扩展并显示为完成,$ export IFS=" " $ complete -W "bubble quick" ./sort_numbers.sh $ ./sort_numbers.sh [TAB][TAB] bubble quick如上所述,通过IFS分隔符分割字符串后,单词得到扩展,因此也可以将这些作为变量,如下所示,$ echo $SORT_TYPE1 bubble $ echo $SORT_TYPE2 quick $ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh $ ./sort_numbers.sh [TAB][TAB] bubble quick9. 编写你自己的函数来生成完成它允许您包含一个函数来定义完成。使用 -F 选项,传递给完成命令的函数名称并被执行以生成完成。例如,函数编写如下所示,_parser_options() { local curr_arg; curr_arg=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) ); }在上述函数中,COMPREPLY :数组保存按 [TAB][TAB] 后显示的完成结果COMP_WORDS :在命令行上键入的单词数组COMP_CWORD :COMP_WORDS 数组的索引,并且可以在命令行上使用此不同位置的单词进行访问。compgen : -W 保存可能的完成,并根据 $current_arg 选择相应的参数文件 parser_option 中存在的此函数的来源如下所示,$ source parser_option将此函数链接到您的解析器脚本,如下所示,$ complete -F _parser_options ./parser.pl $ ./parser.pl [TAB][TAB] -i --incoming -o --outgoing -m --missed如上所示,解析器的选项由函数 _parser_options() 生成。注意:查看 /etc/bash_completion 以查看可编程完成的更多功能。10. 当主要不生成任何辅助规范时如果定义的完成规范没有生成匹配项,则使用 comp-option 来完成 -o 选项提到的完成。$ complete -F _count_files -o dirnames ./countfiles.sh如上所述,完成是用文件 ./countfiles.sh 的 _count_files 函数定义的。如果 _count_files() 函数未生成任何匹配项,则尝试完成目录。$ ls countfiles.sh dir1/ dir2/ dir3/ $./countfiles.sh [TAB][TAB] dir1 dir2 dir3
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签