Posted by lily's blog on September 20, 2024

image.png 文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种:

  • 普通文件类型 d 目录文件 b 块设备文件 c 字符设备文件 s 套接字文件 p 管道文件 l 链接文件 所以D是符号链接文件。 知识点:Linux

image.png nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思 awk 对数据分析的 sed 编辑文件的 crontab 用于设置周期性被执行的指令 nohup 在注销后使用 nohup 命令运行后台中的程序。

image.png 官方解析: 文件类型和文件权限由10个字符组成: 第 1 位表示文件的类型; 第 2 - 4 位表示文件所有者对文件的权限; 第 5 - 7 位表示文件所有者所在组的用户对文件的权限; 第 8 - 10 位表示其他用户对文件的权限。 其中 r 表示可读,w 表示可写,x 表示可执行,- 表示没有权限。题中其他用户的权限为 r–,只有读权限,没有写和可执行权限,所以 D 选项错误。 知识点:Linux -为普通的文件类型 文件的访问权限按照属主,属主所在组和其它用户排序,不同用户的权限用一个八位数也就是三个bit位分别对应读、写和执行来表示所以题中所述文件对其它用户来说是只读的 权限总共是有十位,第一位代表该文件是否是目录,d表示是文件目录,2-4、5-7、8-10分别代表代表所有者,所有者的组,其他组的权限,r表示读,w表示写,x表示执行

image.png 0:标准输入 1:标准输出 2:标准错误输出 “>”表示重定向,&2表示标准错误输出的通道,所以1>&2表示标准输出重定向到标准错误输出通道; 而1>2表示标准输出重定向到文件名为2的文件中

首先,bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。

首先,bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。 输入输出可以重定向,所谓重定向输入就是在命令中指定具体的输入来源,譬如 cat < test.c 将test.c重定向为cat命令的输入源。输出重定向是指定具体的输出目标以替换默认的标准输出,譬如ls > 1.txt将ls的结果从标准输出重定向为1.txt文本。有时候会看到如 ls » 1.txt这类的写法,> 和 » 的区别在于:> 用于新建而»用于追加。即ls > 1.txt会新建一个1.txt文件并且将ls的内容输出到新建的1.txt中,而ls » 1.txt则用在1.txt已经存在,而我们只是想将ls的内容追加到1.txt文本中的时候。 &就是为了让bash将2解释成标准错误而不是文件2。 bash: 例如,假设我们有一个名为”example.sh”的脚本文件,其中包含以下内容:

echo "This is a normal output"
echo "This is an error" 1>&2

当我们运行这个脚本时,第一行的输出将被发送到标准输出流,而第二行的输出将被重定向到标准错误输出流。因此,我们可以通过以下方式运行脚本来查看输出:

$ bash example.sh
This is a normal output
This is an error

通过将标准输出重定向到标准错误输出,我们可以将错误消息与正常输出分开,从而更容易地识别和处理错误。这对于调试和日志记录非常有用

image.png 时程表的格式如下:

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推

当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推

image.png 官方解析: /sbin,s 就是 Super User 的意思,是 Superuser Binaries(超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。 /lib,lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库; /dev,dev 是 Device(设备)的缩写,该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的; /etc,etc 是 Etcetera(等等)的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 知识点:Linux

image.png 关机命令有halt init 0 poweroff shutdown -h 时间,其中shutdown是最安全的 重启命令有reboot, init 6, shutdow -r 时间 ctrl+alt+del为注销

image.png 官方解析: 在linux中, httpd.conf :网络服务器软件的配置文件,对WWW服务器进行访问、控制存取和运行等控制 。 lilo.conf :由引导管理程序 lilo 读取的文件 inetd.conf :保存了系统提供internet服务的数据库并对其进行控制,如打开/关闭某项服务。 resolv.conf:域名解析器使用的配置文件 知识点:Linux、2019

image.png 官方解析:用二进制表示 rwx,r 代表可读,w 代表可写,x 代表可执行。 如果可读,权限二进制为 100,十进制是4; 如果可写,权限二进制为 010,十进制是2;

如果可执行,权限二进制为 001,十进制是1; 题目中 权限十进制为 765,则所有者具有 7 = 4 + 2 + 1 的权限,即 rwx; 所在组具有 6 = 4 + 2 的权限,即 rw-; 其他人具有 5 = 4 + 1 的权限,即 r-x; 所以最终权限标识为 rwxrw-r-x。 知识点:Linux

OSI模型中


image.png $0 脚本名 $1 第一个参数 $# 参数个数 $? 上一个指令执行完的返回状态码 $@ $* 所有参数

image.png 官方解析: $# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 知识点:Linux

image.png

官方解析: cp(copy file)命令主要用于复制文件或目录; dd 命令用于读取、转换并输出数据,dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出; fmt 命令用于编排文本文件,fmt 指令会从指定的文件里读取内容,将其依照指定格式重新编排后,输出到标准输出设备。若指定的文件名为 “-“,则 fmt 指令会从标准输入设备读取数据; cut 从文本文件的每一行中截取指定内容的数据。

image.png 使用git merge命令; 使用git pull命令; 使用git cherry-pick命令 都可以合并 执行git blame;命令时,会逐行显示文件,并在每一行的行首显示commit号,提交者,最早的提交日期等

image.png find 命令用于查找文件: . 在当前目录查找 -name 指定文件名,.log 表示后缀名为 .log, 是通配符,表示匹配任意字符串 -mtime 指定修改时间(以天为单位),+xx 表示修改时间大于 xx 天, -xx 表示修改时间小于 xx 天 -type 是指定文件类型,b 表示块设备文件,d 表示目录,c 表示字符设备文件,p 表示管道文件,l 表示符号链接文件,f 表示普通文件 -size 指定文件大小,+xx 表示文件大小大于 xx,-xx 表示文件大小小于 xx xargs 把前一命令输入当作后一命令输出,通常配合管道使用。


image.png POSIX互斥锁相关函数有以下:

  1. pthread_mutex_init 初始化一个互斥量
  2. pthread_mutex_lock 给一个互斥量加锁
  3. pthread_mutex_trylock 加锁,如果失败不阻塞
  4. pthread_mutex_unlock 解锁
  5. **pthread_mutex_destroy **销毁互斥锁

** int pthread_mutex_destroy(pthread_mutex_t *mutex); //销毁互斥锁** ** int pthread_mutex_lock(pthread_mutex_t *mutex); //以原子操作方式给互斥锁加锁 int pthread_mutex_trylock(pthread_mutex_t *mutex); //非阻塞版本 int pthread_mutex_unlock(pthread_mutex_t *mutex); // 以原子操作方式给互斥锁解锁**

image.png

TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表. 该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。 meminfo文件中,有以下信息(未完全列出) MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小) MemFree: LowFree与HighFree的总和 Buffers: 用来给块设备做的缓冲大小(只记录文件系统的metadata以及 tracking in-flight pages,就是说 buffers是用来存储,目录里面有什么内容,权限等等。) Cached: 用来给文件做缓冲大小(直接用来记忆我们打开的文件). 它不包括SwapCached SwapCached: 已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。 Active: 最近经常被使用的内存,除非非常必要否则不会被移作他用. Inactive: 最近不经常被使用的内存,非常用可能被用于其他途径. HighTotal: HighFree: 高位内存是指所有在860MB以上的内存空间,该区域主要用于用户空间的程序或者是缓存页面。内核必须使用不同的手法使用该段内存,因此它比低位内存要慢一些。 LowTotal: LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。     Among many other things, it is where everything from the Slab is allocated.  Bad things happen when you’re out of lowmem. SwapTotal: 交换空间的总和 SwapFree: 从RAM中被替换出暂时存在磁盘上的空间大小 Dirty: 等待被写回到磁盘的内存大小。 Writeback: 正在被写回到磁盘的内存大小。 Mapped: 影射文件的大小。 Slab: 内核数据结构缓存

image.png cat -n file1 file2 输出file1和file2文件的内容 -n 参数在每行之前显示行号

image.png A: rsync是中小型企业常用的同步工具是基于内容的同步,其他的也都可以,但是存在一些问题, rsync结合inotify可以达到实时同步,最重要的是rsync是同步差异的内容,而不是同步差异的文件开销比其他的小,并且是基于ssh协议的,sshd服务都是服务器必备的,不需要额外装其他服务 B C D: wget 基于http/ftp协议的.ftp 需要其他服务 scp基于ssh协议 ,这些都是基于文件内容做同步开销大 知识点:Linux、系统设计 rsync scp 都能通过ssh进行安全传输,rsync 有增量同步的优势,减少数据传输量。 ftp 不安全 wget 用于从web 下载文件,不适用于服务器之间的文件同步

image.png

**sed、awk和grep是在Linux上进行文本处理时非常常用的工具,被称为”Linux文本处理三剑客”。每个工具都有不同的功能和用途,下面对它们进行详细解释:

  1. Sed(Stream Editor) Sed是一种流式文本编辑器,它可以对文本进行流式编辑和转换。它通过读取输入流中的内容,并根据提供的规则进行匹配和替换。Sed通常用于执行替换、删除、插入和重排文本等操作。它使用简单的命令和正则表达式来定义编辑规则。

  2. Awk Awk是一种强大的文本处理工具,它可以对结构化文本进行处理。Awk将文本文件分解为行和列,并提供了强大的模式匹配和处理功能。它使用用户定义的模式-动作对来处理文本,其中模式指定要匹配的条件,而动作指定在匹配到模式时要执行的操作。Awk常用于处理数据报表、提取特定字段、计算和格式化输出等任务。

  3. Grep(Global Regular Expression Print) Grep是一种文本搜索工具,用于查找符合指定模式的文本行。它可以通过正则表达式进行高级模式匹配,并可以在一个或多个文件中搜索。Grep可以搜索包含特定字符串、匹配特定模式、忽略大小写等。它常用于查找文件中的关键字、过滤和筛选输出。

这三个工具在Linux中被广泛用于处理和操作文本数据。它们可以结合使用,通过管道连接,以进行复杂的文本处理任务。无论是简单的替换和搜索,还是复杂的数据转换和提取,这些工具都能提供强大的功能和灵活性。**

A - Csh: Csh是一种Unix shell,它是C语言的扩展,具有许多C语言的功能。它是一种命令行解释器,用于执行命令和脚本。

B - tcsh: tcsh是Csh的变体,也是一种Unix shell。它是C语言的扩展,具有许多C语言的功能。它提供了更多的命令行编辑和历史记录功能。

C - awk: awk是一种文本处理工具,也被称为过滤器。它具有类似于C语言的语法和功能,可以用于处理和分析文本文件。

D - sed: sed是一种流编辑器,也被称为过滤器。它用于对文本进行转换和处理,具有类似于C语言的语法和功能。它通常用于对文本进行搜索和替换操作。

image.png 在Linux中,线程的同步方式包括:

  1. 互斥锁(Mutex):用于保护共享资源,确保同一时间只有一个线程可以访问该资源。
  2. 条件变量(Condition Variable):用于线程间的通信和同步,允许线程等待某个条件满足后再继续执行。
  3. 信号量(Semaphore):用于控制对共享资源的访问权限,允许多个线程同时访问资源,但限制同时访问的线程数量。
  4. 屏障(Barrier):用于线程间的同步,允许多个线程在某个点上等待,直到所有线程都到达该点后再继续执行。
  5. 自旋锁(Spinlock):与互斥锁类似,但是在等待锁的时候会一直自旋,不会进入休眠状态。

需要注意的是,在Linux中线程的同步方式不包括信号(Signal)。信号是一种进程间的通信机制,用于通知进程发生了某个事件,而不是用于线程间的同步

image.png Linux ls(list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录); Linux cd(change directory)命令用于切换当前工作目录; Linux ln(link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接; Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读。

image.png cc 多数unix通过此调用它们的C编译程序 dd 删除光标所在的一整行 yy 复制光标所在的一整行 ** p 将已复制的数据在光标的下一行粘贴 ** ** P 将已复制的数据在光标的上一行粘贴**

image.png /etc/group是用户组信息文件,里面定义了用户组的ID, /etc/passwd是用户基本信息文件,里面定义了用户的ID,用户组的ID等相关信息,所以因为两个文件中都定义了用户组的信息,所以两个文件应该都要改过来,否则会导致用户找不到所属组**

** image.png tcpdump抓取网络数据包进行分析 top 实时监控活动进程的运行情况 有对应命令字段 cpu使用率 内存使用率 netstat 查看网络连接信息 ifconfig 查看网卡信息

image.png malloc是glibc里的库函数,它封装了一些向系统申请内存的系统调用,而且并不是每次使用malloc的时候都会向系统申请新的内存,所以D是错的 mv不会改变文件的修改时间 ulimit -s 是设置函数调用栈的大小 malloc 是编程者向系统申请分配指定字节的内存空间,动态内存分配