-
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-2113 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-1852 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-1740 0 0 -
系统与进程——操作系统概念和进程概念
目录 冯诺依漫体系结构 操作系统概念 (1)操作系统概念 (2)操作系统用途 (3)操作系统功能实现原理 (4)操作系统组织结构图 (5)系统调用&库函数 进程概念 (1)程序与进程的概念 (2)操作系统如何管理进程 (3)描述(PCB) (4)组织 (5)创建子进程 (6)僵尸进程&僵尸状态(Z) (7)孤儿进程 (8)环境变量 (9)进程虚拟地址空间 (10)进程优先级问题 冯诺依漫体系结构 (1)冯诺依曼结构体系由输入设备、输出设备、控制器、存储器、运算器组成 (2)中央处理器功能:算数运算与逻辑运算 (3)存储器:将数据进行短期存储,等同于内存 所有数据都是采用2进制进行存储的(电流的高低电平模拟二进制数据) 运算产生的数据都存储在内存当中 操作系统概念 (1)操作系统概念 操作系统 = 操作系统内核 + 应用集合 操作系统:计算机系统的一个基本程序集合,成为操作系统(os) 操作系统内核:代码程序,用于对计算机的进程、文件、驱动、内存等进行管理 应用集合:依附操作系统内核实现具体功能的程序 (2)操作系统用途 操作系统用于管理计算机的软硬件资源 软件资源:进程资源、驱动资源 硬件资源:CPU、内存、硬盘、 (3)操作系统功能实现原理 操作系统通过管理实现上述功能 管理 = 描述(结构体)+ 组织(串联结构体) (4)操作系统组织结构图 (5)系统调用&库函数 系统函数:操作系统提供的函数,被称之为系统调用函数 使用时参数多,难度大,不适合新手 库函数:C标准库提供的函数,被称之为库函数。库函数的代码实现当中调用了系统调用函数 使用时参数少,难度低,适合新手(例如C语言中的printf) 进程概念 (1)程序与进程的概念 程序:源代码经过编译产生的可执行文件,这个文件是静态的 进程:程序运行起来的实例,是动态运行的 (2)操作系统如何管理进程 进程的管理 = 描……
SE_Yang 2024-10-1613 0 0 -
初识Linux——目录结构与基本指令
本文主要介绍Linux操作系统的目录结构及其每个文件的用途,Linux操作系统中查询切换操作、文件类操作、用户与权限操作的相关指令。 Linux操作系统目录结构 在Linux操作系统中,所有的文件和目录均被放置在一个以“ / ”作为根节点开始的倒置树状结构中,“ / ”也称为根目录。 上图中各个目录文件用途如下: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 /dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 /etc: etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 /home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 /root: 该目录为系统管理员,也称作超级权限者的用户主目录。 /run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。 /sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 /tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 /usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 /var: var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 Li……
SE_Yang 2024-10-1521 0 0 -
Linux工具——实用工具介绍与使用说明
本文主要介绍Linux中关于安装器、编辑器、编译器、调试器、自动化构建项目、版本管理器等实用工具的功能介绍与使用说明。 目录 包安装器:yum yum的常规操作 文件传输工具:lrzsz & xftp 编译器:vim 三种常见模式 正常模式下7种快捷操作方式 安装vimforcpp 其他 编译器:gcc/g++ 区别 编译的四个过程 静态编译与动态编译 调试器:gdb 程序发行版本 调试基础方式 三种使用场景 自动化构建项目:make&makefile 介绍说明: makefile文件格式: make的工作方式(针对makefile文件): 伪目标定义: 版本管理工具:git 包安装器:yum 用于安装和移除软件 yum的常规操作 (1)查询软件信息 yum list 软件目录查询 yum list | grep "xxx" 通过管道grep过滤查询xxx (2)安装软件 yum list [软件名] 安装软件 yum list -y [软件名] 安装软件(免询问) (3)移除软件 yum remove [软件名] 移除软件 yum remove -y [软件名] 移除软件(免询问) 文件传输工具:lrzsz & xftp 区别 ltzsz:在Linux系统中使用,用于与win系统之间的文件传输 xftp:在win系统中与Xshell结合使用,用于与Linux系统之间的文件传输 (1)lrzsz安装 yum install -y lrzsz 安装lrzsz (2)lrzsz使用 rz +鼠标选择上传文件 win文件上传Linux sz [文件名] +鼠标选择下载地址 Linux文件下载到win (3)注意:仅针对文件使用,如需对文件夹使用,可将其压缩后进行操作 编译器:vim 用于编辑代码 三种常见模式 (1)普通模式:不能输入 vim [文件名] 进入文档编辑的图片模式 (2)插入模式:可输入内容 在‘正常模式’中按‘A’进入插入模式 切换插入模式 在‘插入模式’中按‘Esc’退回正常模式 退回正常模式 (3)底行模式 在‘正常模式’中按‘:’进入底行模式 进入底行模式 在‘底行模式’中按‘Esc’退回正常模式 退回正常模式 在‘底行模式’中按‘wq’……
SE_Yang 2024-10-149 0 0 -
linux中sed命令详解
sed 是 Linux 中的一个流编辑器(stream editor),主要用于处理文本的编辑和转换。它可以从文件或标准输入读取内容,然后根据指定的模式和指令对数据进行处理,最后输出修改后的结果。它的强大之处在于可以通过脚本或命令行进行非交互式的文本处理。 sed 的基本语法 sed [选项] '脚本' 文件 脚本:描述如何编辑文本的操作。 文件:需要处理的文本文件。 选项:控制 sed 的行为,常用选项如下。 常用选项 -e:允许使用多个编辑脚本。 -i:直接修改文件(原地编辑)。 -n:静默模式,不会自动打印输出,通常与 p 命令结合使用。 -r:使用扩展正则表达式。 -f:从脚本文件读取 sed 命令。 常见命令 p:打印匹配的行。 d:删除匹配的行。 s:替换模式(substitute)。 a:在当前行之后追加文本。 i:在当前行之前插入文本。 c:用新的文本替换整行。 示例详解 1. 基本替换 sed 's/old/new/' file.txt s/old/new/:将每行中第一个匹配 old 的字符串替换为 new。 如果需要替换每行中所有匹配的字符串,可以使用 g 选项: sed 's/old/new/g' file.txt 2. 只修改特定行 sed '2s/old/new/' file.txt 只对文件的第二行进行替换操作。 3. 删除行 sed '2d' file.txt 删除第二行。 sed '2,5d' file.txt 删除第 2 到第 5 行。 4. 插入和追加 sed '2a\This is new line' file.txt 在第二行后插入文本 This is new line。 sed '2i\This is new line' file.txt 在第二行前插入文本 This is new line。 5. 多脚本处理 使用 -e 选项可以进行多个命令的组合: sed -e 's/old/new/' -e '2d' file.txt 首先将所有 old 替换为 new,然后删除第二行。 6. 扩展正则表达式 默认情况下,sed 使用基本正则表达式。要使用扩展正则表达式,可以加上 -r 选项: sed -r 's/(foo|bar)/new/' file.txt 将 foo 或 bar 替换为 new。 7. 原地修改文件……
SE_Yang 2024-10-1226 0 0 -
[转]linux 磁盘分区详解
在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进展分区。虽然,现在各种发行版本的 Linux 已经供给了友好的图形交互界面,但是很多的人还是感觉无从下手。这其中的缘由主要是不清楚 Linux 的分区规定,以及它下面最有效的分区工具― Fdisk 的使用方法。 首先我们要对硬盘分区的根本概念进展一些初步的了解,硬盘的分区主要分为根本分区 〔primary partion〕和扩大分区(extension partion)两种,根本分区和扩大分区的数目之和不能大于四个。且根本分区可以马上被使用但不能再分区。扩大分区必需再进展分区后才能使用, 也就是说它必需还要进展二次分区。那么由扩大分区再分下去的是什么呢?它就是规律分区 〔logical partion〕,况且规律分区没有数量上限制。 对习惯于使用 dos 或windows 的用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和名目,它们的文件构造都是独立的,格外好理解。但对这些初上手 red hat linux 的用户,可就有点恼人了。由于对 red hat linux 用户来说无论有几个分区,分给哪一名目使用,它归根结底就只有一个根名目,一个独立且唯一的文件构造。red hat linux 中每个分区都是用来组成整个文件系统的一局部,由于它承受了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和名目,且将一个分区和一个名目联系起来。这时要载入的一个分区将使它的存储空间在 一个名目下获得。 对 windows 用户来说,操作系统必需装在同一分区里,它是商业软件! 所以你没有选择的余地!对 red hat linux 来说,你有了较大的选择余地,你可以把系统文件分几个区来装〔必需要说明载入点〕,也可以就装在同一个分区中〔载入点是“/”〕。 下面从这两个方面入……
SE_Yang 2024-10-1121 0 0 -
入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期 cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 - 月日时分年.秒 clock -w 将时间修改保存到 BIOS 关机 (系统的关机、重启以及登出 ) shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启(1) reboot 重启(2) logout 注销 文件和目录 cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1) lstree 显示文件和目录由根目录开始的树形结构(2) mkdir dir1 创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做 'file1' 的文件' rm……
SE_Yang 2024-10-0814 0 0 -
CentOS 7.6安装 NVIDIA 独立显卡驱动(完整版)
1. 安装基础依赖环境 yum -y install gcc kernel-devel kernel-headers 2.查看内核和源码版本是否一致 查看内核版本: [root@localhost 10:37:03 src]# ls /boot | grep vmlinu #内核版本 vmlinuz-0-rescue-628d97dc7b994787ae886db591ab8146 vmlinuz-3.10.0-957.el7.x86_64 查看源码包版本 [root@localhost 10:37:41 src]# rpm -aq |grep kernel-devel kernel-devel-3.10.0-1062.12.1.el7.x86_64 注意事项,保证内核版本和源码版本一样,否则,安装报错误6 若内核和源码需要从FC官方网站上下载与内核版本对应的源码包进行安装。 可以在以下网站下载并安装: http://rpmfind.net/linux/rpm2html/search.php?query=kernel-devel 3.源码安装英伟达显卡驱动 3.1 在英伟达官网下载相应驱动 官网下载地址:https://www.nvidia.cn/Download/index.aspx?lang=cn 搜索出相应的驱动后,不要直接点,而是右健,Save Link as... 否则,会出现下载半天没动静的情况。 存放的路径上最好不要有中文。 我存放的路径是 ~/usr/local/src/NVIDIA-Linux-x86_64-440.33.01.run 3.2 屏蔽默认带有的nouveau 使用su命令切换到root用户下: su root 屏蔽配制文件中的 blacklist nvidiafb,加上 # 符号用以屏蔽 [root@localhost 10:37:41 src]# vim /lib/modprobe.d/dist-blacklist.conf #blacklist nvidiafb 继续追加以下两条配制 [root@localhost 10:37:41 src]# vim /lib/modprobe.d/dist-blacklist.conf blacklist nouveau options nouveau modeset=0 3.3 重建 initramfs image 步骤 [root@localhost 10:37:41 src]# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak [root@localhost 10:37:41 src]# dracut /boot/initramfs-$(uname -r).img $(uname -r) 3.4 修改运行级别为文本模式 [root@localh……
SE_You 2024-09-2921 0 0