linux函数手册 Linux就该这么学
大家好,今天来为大家分享linux函数手册的一些知识点,和Linux就该这么学的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
linux 好用的命令
Linux运维人员必会的120个命令
跟老男孩学Linux运维:核心系统命令实战
前言
第1章 Linux命令行简介/ 1
1.1Linux命令行概述/ 1
1.2在Linux命令行下查看命令帮助/ 4
1.3Linux shutdown reboot halt/ 9
关机:
shutdown-h now
halt
init 0
第2章文件和目录操作命令/ 13
2.1pwd:显示当前所在的位置/ 13
2.2cd:切换目录/ 16
2.3tree:以树形结构显示目录下的内容/ 18
2.4mkdir:创建目录/ 22
2.5touch:创建空文件或改变文件的时间戳属性/ 27
2.6ls:显示目录下的内容及相关属性信息/ 30
2.7cp:复制文件或目录/ 39
2.8mv:移动或重命名文件/ 42
2.9rm:删除文件或目录/ 45
2.10rmdir:删除空目录/ 48
2.11ln:硬链接与软链接/ 49
2.12readlink:查看符号链接文件的内容/ 54
2.13find:查找目录下的文件/ 55
2.14xargs:将标准输入转换成命令行参数/ 68
2.15rename:重命名文件/ 71
2.16basename:显示文件名或目录名/ 72
2.17dirname:显示文件或目录路径/ 72
2.18chattr:改变文件的扩展属性/ 73
2.19lsattr:查看文件扩展属性/ 75
2.20file:显示文件的类型/ 76
2.21md5sum:计算和校验文件的MD5值/ 77
2.22chown:改变文件或目录的用户和用户组/ 80
2.23chmod:改变文件或目录权限/ 81
2.24chgrp:更改文件用户组/ 85
2.25umask:显示或设置权限掩码/ 86
2.26老男孩从新手成为技术大牛的心法/ 90
第3章文件过滤及内容编辑处理命令/ 91
3.1cat:合并文件或查看文件内容/ 91
3.2tac:反向显示文件内容/ 103
3.3more:分页显示文件内容/ 104
3.4less:分页显示文件内容/ 107
3.5head:显示文件内容头部/ 109
3.6tail:显示文件内容尾部/ 111
3.7tailf:跟踪日志文件/ 114
3.8cut:从文本中提取一段文字并输出/ 115
3.9split:分割文件/ 117
3.10paste:合并文件/ 118
3.11sort:文本排序/ 123
3.12join:按两个文件的相同字段合并/ 127
3.13uniq:去除重复行/ 129
3.14wc:统计文件的行数、单词数或字节数/ 131
3.15iconv:转换文件的编码格式/ 133
3.16dos2unix:将DOS格式文件转换成UNIX格式/ 134
3.17diff:比较两个文件的不同/ 135
3.18vimdiff:可视化比较工具/ 138
3.19rev:反向输出文件内容/ 139
3.20tr:替换或删除字符/ 140
3.21od:按不同进制显示文件/ 143
3.22tee:多重定向/ 145
3.23vi/vim:纯文本编辑器/ 147
3.24老男孩逆袭思想:做Linux运维的多个好处/ 152
第4章文本处理三剑客/ 153
4.1grep:文本过滤工具/ 153
4.2sed:字符流编辑器/ 159
4.3awk基础入门/ 165
第5章 Linux信息显示与搜索文件命令/ 176
5.1uname:显示系统信息/ 176
5.2hostname:显示或设置系统的主机名/ 178
5.3dmesg:系统启动异常诊断/ 179
5.4stat:显示文件或文件系统状态/ 181
5.5du:统计磁盘空间使用情况/ 183
5.6date:显示与设置系统时间/ 186
5.7echo:显示一行文本/ 190
5.8watch:监视命令执行情况/ 193
5.9which:显示命令的全路径/ 195
5.10whereis:显示命令及其相关文件全路径/ 196
5.11locate:快速定位文件路径/ 197
5.12updatedb:更新mlocate数据库/ 199
5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视/ 200
第6章文件备份与压缩命令/ 201
6.1tar:打包备份/ 201
6.2gzip:压缩或解压文件/ 208
6.3zip:打包和压缩文件/ 211
6.4unzip:解压zip文件/ 212
6.5scp:远程文件复制/ 214
6.6rsync:文件同步工具/ 216
6.7老男孩逆袭思想:新手如何高效地提问/ 220
第7章 Linux用户管理及用户信息查询命令/ 222
7.1 useradd:创建用户/ 222
7.2usermod:修改用户信息/ 227
7.3userdel:删除用户/ 229
7.4groupadd:创建新的用户组/ 230
7.5groupdel:删除用户组/ 231
7.6passwd:修改用户密码/ 232
7.7chage:修改用户密码有效期/ 237
7.8chpasswd:批量更新用户密码/ 238
7.9su:切换用户/ 240
7.10visudo:编辑sudoers文件/ 242
7.11sudo:以另一个用户身份执行命令/ 244
7.12id:显示用户与用户组的信息/ 248
7.13w:显示已登录用户信息/ 249
7.14who:显示已登录用户信息/ 250
7.15users:显示已登录用户/ 252
7.16whoami:显示当前登录的用户名/ 253
7.17last:显示用户登录列表/ 253
7.18lastb:显示用户登录失败的记录/ 254
7.19lastlog:显示所有用户的最近登录记录/ 255
第8章 Linux磁盘与文件系统管理命令/ 257
8.1fdisk:磁盘分区工具/ 257
8.2partprobe:更新内核的硬盘分区表信息/ 265
8.3tune2fs:调整ext2/ext3/ext4文件系统参数/ 266
8.4parted:磁盘分区工具/ 268
8.5mkfs:创建Linux文件系统/ 272
8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息/ 274
8.7resize2fs:调整ext2/ext3/ext4文件系统大小/ 275
8.8fsck:检查并修复Linux文件系统/ 278
8.9dd:转换或复制文件/ 281
8.10mount:挂载文件系统/ 284
8.11umount:卸载文件系统/ 288
8.12df:报告文件系统磁盘空间的使用情况/ 289
8.13mkswap:创建交换分区/ 293
8.14swapon:激活交换分区/ 294
8.15swapoff:关闭交换分区/ 295
8.16sync:刷新文件系统缓冲区/ 296
第9章 Linux进程管理命令/ 298
9.1ps:查看进程/ 298
9.2pstree:显示进程状态树/ 305
9.3pgrep:查找匹配条件的进程/ 306
9.4kill:终止进程/ 307
9.5killall:通过进程名终止进程/ 310
9.6pkill:通过进程名终止进程/ 311
9.7top:实时显示系统中各个进程的资源占用状况/ 313
9.8nice:调整程序运行时的优先级/ 320
9.9renice:调整运行中的进程的优先级/ 323
9.10nohup:用户退出系统进程继续工作/ 324
9.11strace:跟踪进程的系统调用/ 325
9.12ltrace:跟踪进程调用库函数/ 332
9.13runlevel:输出当前运行级别/ 334
9.14init:初始化Linux进程/ 335
9.15service:管理系统服务/ 335
第10章 Linux网络管理命令/ 338
10.1ifconfig:配置或显示网络接口信息/ 338
10.2ifup:激活网络接口/ 343
ifup eth0
10.3ifdown:禁用网络接口/ 343
ifdown eth0
service network restart(/etc/init.d/network restart)激活整个网络,所有网卡。
10.4route:显示或管理路由表/ 344
10.5arp:管理系统的arp缓存/ 350
10.6ip:网络配置工具/ 351
10.7netstat:查看网络状态/ 358
10.8ss:查看网络状态/ 362
10.9ping:测试主机之间网络的连通性/ 363
10.10traceroute:追踪数据传输路由状况/ 366
10.11arping:发送arp请求/ 367
10.12telnet:远程登录主机/ 369
10.13nc:多功能网络工具/ 370
10.14ssh:安全地远程登录主机/ 373
10.15wget:命令行下载工具/ 376
10.16mailq:显示邮件传输队列/ 379
10.17mail:发送和接收邮件/ 381
10.18nslookup:域名查询工具/ 386
10.19dig:域名查询工具/ 389
10.20host:域名查询工具/ 393
10.21nmap:网络探测工具和安全/端口扫描器/ 394
10.22tcpdump:监听网络流量/ 398
第11章 Linux系统管理命令/ 407
11.1lsof:查看进程打开的文件/ 407
11.2uptime:显示系统的运行时间及负载/ 411
11.3free:查看系统内存信息/ 411
11.4iftop:动态显示网络接口流量信息/ 413
11.5vmstat:虚拟内存统计/ 415
11.6mpstat:CPU信息统计/ 419
11.7iostat:I/O信息统计/ 420
11.8iotop:动态显示磁盘I/O统计信息/ 423
11.9sar:收集系统信息/ 425
11.10chkconfig:管理开机服务/ 430
11.11ntsysv:管理开机服务/ 433
11.12 setup:系统管理工具/ 434
11.13ethtool:查询网卡参数/ 436
11.14mii-tool:管理网络接口的状态/ 437
11.19rpm:RPM包管理器/ 443
11.20yum:自动化RPM包管理工具/ 446
top命令
第12章 Linux系统常用内置命令/ 450
12.1Linux内置命令概述/ 450
12.2Linux内置命令简介/ 450
12.3Linux常用内置命令实例/ 452
Linux手册翻译 — userfaultfd(2)
userfaultfd- create a file descriptor for handling page faults in user space.
The userfaultfd mechanism can be used as an alternative to traditional user-space paging techniques based on the use of the SIGSEGV signal and mmap(2). It can also be used to implement lazy restore for checkpoint/restore mechanisms, as well as post-copy migration to allow(nearly) uninterrupted execution when transferring virtual machines and Linux containers from one host to another.
userfaultfd()系统调用会创建一个 userfaultfd对象,用以将pagefault的处理函数委托给用户空间的处理程序,创建成功后返回一个指向该 userfaultfd对象的文件描述符。新创建的对象使用 ioctl(2)进行配置。
一旦userfaultfd对象配置成功,就可以使用 read(2)系统调用接收userfaultfd的消息通知,即当触发缺页时会fd将变为可读,通过 read(2)可以获取缺页的详细信息。read(2)操作可能是阻塞或非阻塞的,这取决于创建userfaultfd时指定的flag参数,同时也可通过 fcntl(2)进行修改。从上面的描述不难发现,这是非常经典的基于fd的设计,如socket-fd、event-fd、time-fd、pipe-fd性质完全类似,配合epoll异步处理事件是最佳的编程选择。
以下参数可以通过位或方式指定给flag参数,以控制userfaultfd()的操作:
多个模式可以同时注册在相同的memory范围内。
从 Linux 4.14开始,userfaultfd页面错误通知可以选择性地将错误线程 ID信息嵌入到通知中。
userfaultfd设计的初衷是为了让多线程应用中的某个线程能够为同进程的其他线程提供页面映射服务。当注册到userfaultfd对象的一个虚拟内存区域发生页面故障时,故障线程进入睡眠状态,并产生一个可以通过userfaultfd文件描述符读取的事件。故障处理线程从该文件描述符中读取事件,并使用ioctl_userfaultfd(2)中描述的操作来处理。处理页面故障事件时,故障处理线程可以唤醒沉睡线程。
故障线程和故障处理线程有可能在不同进程的上下文中运行。在这种情况下,这些线程可能属于不同的程序,故障线程的进程不一定会与处理页面故障的进程合作。在这种非合作模式下,监控userfaultfd和处理页面故障的进程需要注意故障进程的虚拟内存布局的变化,以避免内存损坏。
从Linux 4.11开始,userfaultfd也可以通知故障处理线程有关故障进程的虚拟内存布局的变化。此外,如果故障进程调用了fork(2),与父进程相关的userfaultfd对象可能被复制到子进程中,并且向userfaultfd监视器发送UFFD_EVENT_FORK事件,事件信息中包括子进程创建的userfault对象对应的文件描述符,这允许userfaultfd监视器为子进程处理页面故障。与必须是同步的、需要显式或隐式唤醒的分页故障不同,所有其他事件都是异步传递的,一旦userfaultfd管理器执行read(2),非合作进程就会恢复执行。
在用userfaultfd()创建了userfaultfd对象后,应用程序必须用UFFDIO_API ioctl(2)操作来启用它。在成功完成UFFDIO_REGISTER操作后,当注册内存范围内发生的页面故障且满足注册时定义的模式时,内核会将器转发给用户空间的应用程序。然后应用程序可以使用UFFDIO_COPY或UFFDIO_ZEROPAGE ioctl(2)操作来解决该页故障。
从Linux 4.14开始,如果应用程序使用UFFDIO_API ioctl(2)设置UFFD_FEATURE_SIGBUS功能位,则不会发送页面故障通知给用户空间,而是传递一个SIGBUS信号给故障进程。这个特性对于那些想阻止内核自动分配页面和填补稀疏文件中的空洞(当通过内存映射访问空洞时)的应用程序来说是很有用的。
从 Linux 4.11开始,在UFFDIO_API操作过程中,除页面故障外,其他事件也可能会被启用。
直到 Linux 4.11,userfaultfd只能用于匿名私有内存映射。从 Linux 4.11开始,userfaultfd也可以与hugetlbfs和共享内存映射一起使用。
从 Linux 5.7开始,userfaultfd支持写保护模式。在使用此功能之前,用户需要先使用UFFDIO_API ioctl针对功能位 UFFD_FEATURE_PAGEFAULT_FLAG_WP检查此功能的可用性。
要注册 userfaultfd写保护模式,用户需要启动UFFDIO_REGISTER ioctl并设置模式 UFFDIO_REGISTER_MODE_WP。
对 userfaultfd文件描述符的 read(2)可能会失败,并出现以下错误:
读取 userfaultfd结构的每次read(2)都会返回一个或多个 uffd_msg结构,每个结构都描述一个页面错误事件或非合作 userfaultfd使用所需的事件:
每次read(2) userfaultfd文件描述符都会返回一个或多个 uffd_msg结构,每个结构都描述一个页面错误事件或非合作 userfaultfd使用所需的事件:
如果在关联的打开文件描述中启用了 O_NONBLOCK标志,则可以使用 poll(2)、select(2)和 epoll(7)监视 userfaultfd文件描述符。
成功时,userfaultfd()返回一个引用 userfaultfd对象的新文件描述符。出错时返回-1,并设置 errno以指示错误。
程序采用一个命令行参数,即将在映射中创建的页数,其页错误将通过 userfaultfd处理。
创建 userfaultfd对象后,程序会创建一个指定大小的匿名私有映射,并使用 UFFDIO_REGISTER ioctl(2)操作注册该映射的地址范围。
然后程序创建第二个线程来执行处理页面错误的任务。然后主线程遍历映射的页面,从连续页面中获取字节。因为页面还没有被访问过,所以第一次访问每个页面中的一个字节将触发 userfaultfd文件描述符上的页面错误事件。
每个页面错误事件都由第二个线程处理,该线程位于处理来自 userfaultfd文件描述符的输入的循环中。在每次循环迭代中,第二个线程首先调用 poll(2)来检查文件描述符的状态,然后从文件描述符中读取一个事件。所有此类事件都应该是 UFFD_EVENT_PAGEFAULT事件,线程通过使用 UFFDIO_COPY ioctl(2)操作将一页数据复制到故障区域来处理这些事件。
用户faultfd机制的使用:创建两个线程,其中一个充当进程的页面错误处理程序。创建 userfaultfd对象后,创建一个指定大小的匿名私有映射,并使用 UFFDIO_REGISTER ioctl(2)操作注册该映射的地址范围。创建第二个线程来执行处理页面错误的任务。遍历映射的页面,第一次访问每个页面中的一个字节将触发 userfaultfd文件描述符上的页面错误事件。每个页面错误事件都由第二个线程处理,通过使用 UFFDIO_COPY ioctl(2)操作将一页数据复制到故障区域。
linux下如何运行可执行文件
1、打开kali linux的终端。创建一个文件并命名为dutest.c。在终端输入:touch test.c。
2、可以看到已经生成了一个后缀为test.c的源文件。然后用vim工具打开这个文件并编写代码。在终端中输入:vim test.c或者gvim test.c打开这个文件并编写代码。
3、编写完了这个代码。现在开始编译源文件。在终端中输入:gcc test.cgcc是linux自带的c语言编译器。如果是windows则要用ide工具来编译。linux系统一般写C语言用gcc+vim+gdb三个自带的工具就可以了。
4、打完gcc test.c编译完C源文件。然后就可以看见a.out的文件。一般linux系统就默认为a.out为编译完的文件。现在运行a.out文件。在a.out文件的目录下打开终端并输入./a.out就是运行文件了。
5、如果想要编译完的文件名不要用a.out文件。就可以在编译时打入.gcc test.c-o test.out然后就可以看见有一个test.out.文件了。-o后面跟着的编译生成的文件名。
6、再运行test.out在终端中输入./test.out结果如图。这样在linux系统下编译并运行C语言就完成了。