操作系统
  • 【Linux更新驱动、cuda和cuda toolkit】

    1. 更新显卡驱动 1.1. 查看当前显卡驱动版本 nvidia-smi -a 可以看到目前的显卡驱动是418.74,CUDA Driver是10.1,显卡是2080Ti。 1.2. 删除原始显卡驱动 sudo nvidia-uninstall 遇到选项一路回车就行。 1.3. 删除CUDA Toolkit 找到你安装cuda toolkit的位置 cd /usr/local/cuda-10.1/bin/ sudo ./cuda-uninstaller 都删除了 删除cuda toolkit文件夹: rm -r /usr/local/cuda-10.1/ 1.4. 在NVIDIA官网找到2080Ti对应的最新驱动程序 NVIDIA官网按照我的版本信息选择相应的版本 下载最新版本驱动: 将下载的‘NVIDIA-Linux-x86_64-550.54.14.run’放在服务器某路径下: cd /root/nvidia-driver-550.54.14/ sh NVIDIA-Linux-x86_64-550.54.14.run 一路选择继续安装,安装好之后重启: sudo reboot 重启后查看: nvidia-smi 可以看到driver和CUDA Version都更新到最新了。 2. 更新CUDA Toolkit CUDA主要有两个API:runtime API(nvcc -V)、driver API(nvidia-smi) nvidia-smi属于driver API、nvcc属于runtime API。 用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。 用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。 (如果只安装driver API,不安装runtime API(cuda toolkit),也能正常使用pytorch,但涉及到一些需要编译安装的更底层的工具,比如apex、deepspeed,就会报错,这时还需要床runtime API,不如直接全装了。) 2.1. 下载CUDA Toolkit 来这里下载对应CUDA Driver Version版本的CUDA Toolkit Version(根据你的环境自己选): mkdir /root/cuda-toolkit-12.1/ cd /root/cuda-toolkit-12.1/ wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run 2.2. 安装.ru……

    SE_Meng 2024-10-28
    96 0 0
  • 卸载cuda

    一,卸载CUDA 7.0 在目录: /usr/local/cuda-7.0/bin 有CUDA自带的卸载工具uninstall_cuda_toolkit_7.0.pl,使用命令: sudo ./uninstall_cuda_toolkit_7.0.pl

    SE_Meng 2024-10-25
    8 0 0
  • 【linux】服务器卸载cuda、NVIDIA驱动

    1、查找已安装的 CUDA 包: dpkg -l | grep cuda 2、卸载 CUDA: sudo apt-get --purge remove 'cuda*' sudo apt-get --purge remove 'nvidia*' sudo apt-get autoremove sudo apt-get autoclean 3、删除残留文件 sudo rm -rf /usr/local/cuda* sudo rm -rf /usr/lib/cuda* sudo rm -rf /usr/local/nvidia* sudo rm -rf /usr/local/cuda-* 4、更新系统的包索引: sudo apt-get update 5、检查是否卸载干净: dpkg -l | grep cuda dpkg -l | grep nvidia 若还没卸载干净 sudo dpkg --purge libnvidia-compute-470:amd64 ... # 把列表的所有都删掉,直到上述命令返回空白 whereis cuda nvcc -V  

    SE_Meng 2024-10-24
    190 0 0
  • [Linux]僵尸进程,孤儿进程,环境变量

    僵尸进程 僵尸进程是操作系统中一个常见的概念,具体指已经终止但仍然占用系统资源的进程。僵尸进程的形成主要是由于父进程在子进程终止后没有正确处理子进程的退出状态。以下是对僵尸进程的详细解析: 定义与特征 定义 僵尸进程是指子进程已经结束运行,但父进程还未对其进行善后处理(如调用wait()或waitpid()函数)的状态。此时,子进程的进程描述符(PCB)仍然保留在系统中,占用一定的内存空间。 特征 僵尸进程不再消耗CPU资源,但它们的进程描述符(PCB)仍然存在于系统中,这意味着它们会占用一定的内存资源。如果系统中存在大量的僵尸进程,可能会导致系统资源的浪费和性能下降。 产生原因 僵尸进程的产生通常是因为父进程没有调用wait()或waitpid()等函数来清理子进程的状态。当子进程结束时,它会发送一个SIGCHLD信号给父进程,通知父进程它已经结束。如果父进程没有处理这个信号或者没有调用wait()系列函数来清理子进程的状态,子进程就会变成僵尸进程。 解决方法 为了解决僵尸进程问题,可以采取以下几种方法: 使用wait()或waitpid()系统调用:父进程可以通过调用wait()或waitpid()函数来获取子进程的退出状态,并清理子进程所占用的资源。 忽略SIGCHLD信号:父进程可以使用signal()函数将SIGCHLD信号的处理函数设置为SIG_IGN,表示忽略该信号。这样,在子进程终止后,内核会自动回收子进程的资源,不会产生僵尸进程。 使用双向管道进行进程间通信:父进程可以创建一个双向管道,子进程在终止时通过管道发送一个消息给父进程。父进程在接收到消息后调用wait()或waitpid()来处理子进程的终止状态。 监控和清理僵尸进程:可以使用系统命令(如ps、grep等)来查找僵尸进程,并通过杀死其父进程来间接清理僵尸进程。但请注意,直接杀死僵尸进程是不可能的,因为它们已经处于死亡状态。 注意事项 僵……

    SE_Yang 2024-10-24
    19 0 0
  • CentOS 修改服务器登录密码的完整指南

    目录 使用 CentOS 修改服务器登录密码的完整指南 一、引言 二、基本概念 三、修改密码的步骤 3.1 登录到 CentOS 服务器 3.2 修改当前用户的密码 3.3 修改其他用户的密码 3.4 密码复杂性检查 四、解决密码复杂性问题 4.1 使用更强的密码 4.2 禁用密码复杂性检查 禁用 `pam_pwquality` 模块的配置 临时修改 `pam` 模块配置 4.3 修改成功后恢复配置 五、总结 使用 CentOS 修改服务器登录密码的完整指南 在日常使用 Linux 服务器时,修改用户登录密码是维护系统安全性的重要环节。本文将详细介绍如何在 CentOS 系统中修改用户密码,包括可能遇到的常见问题及其解决方案。 一、引言 在 CentOS 等 Linux 系统中,密码是保护用户账户及系统数据的第一道防线。因此,定期更改密码和使用强密码是系统管理员的基本职责。本文将为您提供一个系统化的指南,帮助您顺利完成密码的修改,并解决在此过程中可能遇到的各种问题。 二、基本概念 在开始之前,我们需要了解一些基本概念: 用户账户: Linux 系统中每个用户都有一个账户和相应的密码。账户用于访问系统的权限和资源。 密码复杂性: 密码复杂性是指密码必须满足的强度要求,以保护账户不受未经授权的访问。 字典检查: 许多 Linux 系统在密码设置时会进行字典检查,确保新密码不与常见的词汇相同,以增强安全性。 三、修改密码的步骤 3.1 登录到 CentOS 服务器 首先,您需要通过 SSH 或直接登录到 CentOS 服务器。可以使用以下命令: ssh user@your_server_ip 1 确保您替换 user 和 your_server_ip 为您的实际用户名和服务器的 IP 地址。 3.2 修改当前用户的密码 如果您希望修改当前登录用户的密码,执行以下命令: passwd 1 系统会提示您输入当前密码和新密码: Changing password for user user. Current password: (输入当前密码) New password: (输入新密码) Retype n……

    SE_Yang 2024-10-23
    22 0 0
  • 银河麒麟系统v10修改密码(忘记密码版)

    1、重启电脑,选择“kylin v10 sp1 gnu/linux”(第一个选项),按e进入编辑模式。 2、进入编辑模式后,把“ro”后代码删除,并把“ro”改为“rw(空格)single(空格)console=tty(空格)init=/bin/bash”,改完后按f10。 3、显示“root”后,在“root”代码后输入“passwd(空格)kylin(用户名,此处以默认用户名kylin为例)”,然后按回车。 查看用户名,可以从“设置”-“关于”中查看。 4、输入新密码,注意密码设置为:数字+字母(输入数字时不用小键盘,用大键盘)或数字+字母+符号(有时候符号不显示,可忽略输入符号)。 PS:如果设置密码时,不显示密码属于正常现象,继续照常输入修改就ok! 5、更改密码成功,显示“passwd: password updated successfully”。然后在新显示的“root”代码后,输入“reboot(空格)-f”重启电脑。 仅供 麒麟系统v10修改密码参考。 别的系统版本修改密码的代码不一定相同,详情咨询麒麟官方客服。  

    SE_Meng 2024-10-23
    415 0 0
  • Windows11下安装wsl报错:无法解析服务器的名称或地址

    问题描述 之前在自己的笔记本电脑(Windows10)上下载安装WSL很顺利,具体教程见前面的文章,但是在新电脑(Windows11)上下载就报错:无法解析服务器的名称或地址,按照网上说的两个解决方案: 修改 DNS 为手动 114.114.114.114; 查询 raw.githubusercontent.com 这个域名对应的能ping通的ip,将其写入hosts文件) 都尝试了,还是报错 原因分析: 后来看到一个博主提到raw.githubusercontent.com肯定要访问GitHub,恍然大悟,果然报错就是由于当前网络访问不了GitHub 解决方案: 解决办法就是安装一个加速器就可以了,那位博主推荐的是Watt Toolkit加速器,但我尝试过后发现下载很慢而且容易断连,后来换成了FastGithub就相对快一点,然后就一切顺利完成了 附FastGithub下载地址: 清华大学云盘 (tsinghua.edu.cn) https://cloud.tsinghua.edu.cn/d/df482a15afb64dfeaff8/ ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/2201_75392924/article/details/142899840

    SE_Yang 2024-10-22
    62 0 0
  • linux下查看硬盘信息、内存信息

    查看硬盘信息: download soft:          http://www.smartmontools.org/wiki/Download#Installfromthesourcetarball install:         #tar zxvf smartmontools-6.3.tar.gz         #cd smartmontools-6.3         #./configure         # make && make install   查看磁盘运行时间 #smartctl -A /dev/sda1 smartctl 6.3 2014-07-26 r3976 [x86_64-linux-3.2.0-4-amd64] (local build) Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE   1 Raw_Read_Error_Rate     0x000f   065   064   044    Pre-fail  Always       -       3493854   3 Spin_Up_Time            0x0003   094   094   000    Pre-fail  Always       -       0   4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       14   5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0   7 Seek_Error_Rate         0x000f   100   253   030    Pre-fail  Always       -       248627 <span style="color:#ff6666;"> <span style="color:#ff0000;">9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       703</span></span>  10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0     查看磁盘硬件信息: # smartctl  -i /dev/sda smartctl 6.3 2014-07-26 r……

    SE_Yang 2024-10-21
    14 0 0
  • 基础IO——文件系统与接口、文件描述符、静/动态库、重定向

    本文主要介绍了LInux操作系统中关于文件系统与文件接口、静态库与动态库、重定向以及文件描述符的相关内容。 目录 C文件接口 (1)打开文件:fopen (2)写文件:fwrite (3)读文件:fread (4)移动文件流指针位置:fseek (5)fclose: 系统调用文件接口 (1)open (2)write (3)read (4)lseek (5)close 文件描述符 (1)文件描述符概念: (2)查看文件描述符分配规则 (3)从task_struct的角度理解文件描述符 (4)文件描述符和文件流指针的区别 重定向 (1)符号 (2)从内核理解重定向 (3)重定向接口 静态库&动态库 (1)库的概念 (2)库的优点 (3)动态库 (4)找到动态库的方式 (5)静态库 软硬链接 (1)软连接 (2)硬链接 简单的文件系统 (1)文件在磁盘当中是如何进行存储的(ext2) (2)创建新文件的4个操作 C文件接口 (1)打开文件:fopen FILE *fopen(const cahr *path,const cahr *mode); 示例: FILE* fp = fopen("目标文件名","mode"); 函数参数: path:打开的文件(带路径) mode:以何种方式打开 (1)r:只读,文件流指向文件头部 (2)r+:读写,文件流指向文件头部 (3)w:只写,如果文件存在则清空文件开始写 如果文件不存在则创建文件 (4)w+:读写,如果文件存在则清空文件开始写 如果文件不存在则创建文件 (5)a:追加写,如果文件不存在,则创建文件,从文件末尾开始写 (6)a+:可读、追加写,如果文件不存在,则创建文件,从文件末尾开始写 返回值: 成功:返回文件流指针 失败:返回NULL (2)写文件:fwrite size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream); 示例: ssize_t w_size = fwrite(str,1,strlen(str),fp); //定义块大小为1个字节,通过strlen()获取字符串长度,返回值为块数,也是字节数(块大小为一个字节) 函数……

    SE_Yang 2024-10-18
    53 0 0
  • 进程控制——进程创建、终止、等待、程序替换

    本文主要介绍了进程控制中关于进程创建、进程终止、进程等待、进程程序替换的相关内容。 目录 进程创建 一、fork() 二、fork()内部操作 三、用户空间&内核空间 四、写时拷贝(写时复制) 五、fork创建子进程特性 六、fork特殊用法 进程终止 一、进程终止 四、exit和_exit的区别 五、刷新缓冲区的方式 六、缓冲方式 进程等待 一、进程等待的意义 二、wait函数 三、waitpid函数 进程程序替换 一、原理 二、exec函数簇 进程创建 一、fork() 概念: fork()可以让正在运行的进程创建出一个新的进程,新进程为子进程,原进程为父进程,二者相互独立。 fork()返回值: pid_t [返回值变量] = fork(); 如果使用fork创建子进程成功,则在父进程和子进程中分别返回: 父进程返回大于0的数(子进程的pid) 子进程的返回值为0 如果使用fork创建子进程失败,则返回-1 二、fork()内部操作 父进程创建子进程,子进程拷贝父进程的PCB 给子进程分配新的内存块和内核数据结构(task_struct) 子进程拷贝部分父进程部分数据结构内容 添加子进程到系统进度列表当中,添加到双向链表当中 修改子进程PCB内容(子进程pid、信号级等) fork返回,开始调度器调度(操作系统开始调度) 三、用户空间&内核空间 概念: 1. 用户空间:应用程序和程序员代码运行的空间 2. 内核空间:Linxu操作系统、驱动程序、系统调用函数运行的空间 补充: 1. 如果程序员代码调用系统调用函数,则会由用户空间 “ 切换 “ 到内核空间,执行完系统调用函数后再 ” 切换回 “ 用户空间 2. fork()函数时系统调用函数,属于内核空间 四、写时拷贝(写时复制) 概念: 创建子进程时,子进程会拷贝父进程的PCB和页表(虚拟内存地址和物理内存地址的映射关系),同时会将内存设置为只读,当父进程(或子进程)对内存进行修改操作时,便会触发缺页异……

    SE_Yang 2024-10-17
    42 0 0