目录
一、前言
记录我曾查询过的Linux命令,方便后续回顾。
二、2023年
1、竖线 '|',双竖线 '||',&和&&
1)竖线 '|',在 Linux 中是作为管道符的,将 '|' 前面命令的输出作为 '|' 后面的输入。
2)双竖线 '||',用双竖线 '||' 分割的多条命令,执行的时候遵循如下规则,如果前一条命令为真,则后面的命令不会执行,如果前一条命令为假,则继续执行后面的命令。
3)& 同时执行多条命令,不管命令是否执行成功。
4)&& 可同时执行多条命令,当碰到执行错误的命令时,将不再执行后面的命令。如果一直没有错误的,则执行完毕。
2、wc
参考链接:Linux wc命令 | 菜鸟教程 (runoob.com)
wc 命令用于计算字数。
利用 wc 指令我们可以计算文件的 Byte数、字数、或是列数;
若不指定文件名称、或是所给予的文件名为 "-",则 wc 指令会从标准输入设备读取数据。
!注!:详细解析与例子请看上述链接。
3、free 和 top
- 单独查看内存使用情况的命令:free -m
- free的默认单位是kb
- [Mem:] [total] 的值就是当前系统的内存大小 (MB)
- 功能说明:显示内存状态。
- 补充说明:free 指令会显示内存的使用情况,包括实体内存,虚拟的交换文档内存,共享内存区段,连同系统核心使用的缓冲区等。
- 参数:
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -o 不显示缓冲区调节列。
- -s 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
参考链接:Linux free命令 | 菜鸟教程
top 命令可以查看系统的 CPU、内存、运行时间、交换分区、执行的线程等信息
# 也可以使用增强版 top
apt-get install htop
htop
4、c 库函数 strcpy()
The function prototype of strcpy()
is:
char* strcpy(char* destination, const char* source);
- The
strcpy()
function copies the string pointed by source (including the null character) to the destination.- The
strcpy()
function also returns the copied string.- The
strcpy()
function is defined in the string.h header file.
5、c 库函数 memmove()
void *memmove(void *str1, const void *str2, size_t n)
- 从 str2 复制 n 个字符到 str1
- 但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。
- str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
- str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
- n -- 要被复制的字节数。
6、open
open(const char *path, int oflag, ...);
The file name specified by path is opened for reading and/or writing, as specified by the argument oflag; the file descriptor is returned to the calling process.The oflag argument may indicate that the file is to be created if it does not exist (by specifying the O_CREAT flag). In this case, open() and openat() require an additional argument mode_t mode; the file is created with mode mode as described in chmod(2) and modified by the process' umask value (see umask(2)).
关于open的更多内容见联机帮助。
RETURN VALUES
If successful, open() returns a non-negative integer, termed a file descriptor. It returns -1 on failure, and sets errno to indicate the error.
oflag取0,说明是以只读方式打开文件,相当于 O_RDONLY。
7、sort
Linux sort 命令用于将文本文件内容加以排序。
sort 可针对文本文件的内容,以行为单位来排序。
语法:
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]
参数详情见:Linux sort命令 | 菜鸟教程 (runoob.com)
8、uniq
Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。
语法:
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数详情见:Linux uniq 命令 | 菜鸟教程 (runoob.com)
举例(查看物理CPU数目,并用管道排序去重后输出):
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
9、fgets
联机帮助。
char *fgets(char *s, int size, FILE *stream);
fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer. A terminating null byte ('\0') is stored after the last character in the buffer.
它的功能是从 stream 流中读取 size 个字符存储到字符指针变量 s 所指向的内存空间。它的返回值是一个指针,指向字符串中第一个字符的地址。
10、puts
联机帮助。
int puts(const char *s);
puts() writes the string s and a trailing newline to stdout.
puts() and fputs() return a nonnegative number on success, or EOF on error.
11、fflush
联机帮助。
int fflush(FILE *stream);
功能:刷新流 stream 的输出缓冲区。
对于输出流,fflush() 通过流的底层写入函数强制写入给定输出或更新流的所有用户空间缓冲数据。对于与可查找文件(例如,磁盘文件,但不是管道或终端)相关联的输入流,fflush() 将丢弃从基础文件中提取但尚未被应用程序使用的任何缓冲数据。流的打开状态不受影响。如果流参数为NULL,fflush() 将刷新所有打开的输出流。对于非锁定的对应项,请参阅 unlocked_stdio(3)。
12、htop
它比传统的 top
命令提供了一个更彩色、更可定制的界面,并且在交互性方面有所增强。通过 htop
,用户可以方便地进行进程管理,比如结束进程、改变进程的优先级等。
每列代表的含义如下:
- PID: 进程ID,一个唯一标识正在运行的进程的数字。
- USER: 启动该进程的用户的名称。
- PRI: 进程的优先级,一个较低的数字表示较高的优先级。
- NI: nice 值,反映了进程优先级的调整值。负值意味着较高的优先级,正值意味着较低的优先级。
- VIRT: 虚拟内存的使用量,包括进程使用的所有可执行文件、库,以及交换空间的大小。
- RES: 进程使用的实际物理内存(RAM)的大小。
- SHR: 共享内存的大小,该内存可以被进程之间共享。
- S: 进程的状态。常见的状态包括:
S
:睡眠中R
:运行中D
:不可中断的睡眠状态Z
:僵尸进程T
:被跟踪或停止- CPU%: 进程使用的 CPU 百分比。
- MEM%: 进程使用的内存百分比。
- TIME+: 进程已经占用 CPU 的时间总和,格式通常为小时:分钟:秒。
- Command: 启动进程的命令行命令。
13、ps aux | grep ... 的小提示
a
显示一个终端上的所有进程,包括其他用户的进程。u
显示进程的详细状态。x
显示没有控制终端的进程。
注意,grep
搜索的是整行,所以它可能会匹配到包含 "nginx" 字符串的任何内容,包括 grep
命令本身。为了排除 grep
进程,可以使用以下技巧:
ps aux | grep '[n]ginx'
使用正则表达式 [n]ginx
,grep
将不会匹配其自身的进程,因为它在搜索 ps
输出时并不包含方括号。
如果想要更精确的匹配,可以使用 pgrep
命令,它专门用于搜索正在运行的进程:
pgrep -af nginx
选项:
-a
显示进程的命令行参数。-f
搜索命令行参数中的模式。
三、2024年
1、ls -lh
用来列出当前目录中的文件和文件夹的,包括它们的详细信息。这个命令组合了两个选项:-l
和 -h
,它们的作用如下:
-l
(长格式列表): 这个选项会以长格式列出文件和文件夹的详细信息,包括:
- 文件类型和权限(例如
-rw-r--r--
表示一个普通文件,其中所有者有读写权限,组和其他用户有读权限)- 硬链接的数量
- 文件所有者的用户名
- 文件所属的组名
- 文件大小
- 文件的最后修改时间
- 文件或目录的名称
-h
(可读性大小): 这个选项会将文件大小转换为更易读的格式,例如KB、MB、GB,而不是显示为字节数,这样使得文件大小更易于理解。
所以,当你运行 ls -lh
命令时,它会以易于阅读的长格式列出当前目录中的所有文件和文件夹。
示例输出可能如下所示:
-rw-r--r-- 1 user group 1.1K Jan 1 12:00 example.txt
drwxr-xr-x 5 user group 160 Jan 2 08:00 my_directory
这里,example.txt
是一个文件,大小为1.1KB,最后修改时间是1月1日。my_directory
是一个目录(由 d
在权限字段的开始处标识),包含5个条目(硬链接数),最后修改时间是1月2日。
2、du
du
(disk usage)命令是一个在Unix和类Unix操作系统中常用来检查文件和目录所占磁盘空间的工具。这个命令能帮助用户了解哪些文件和目录占用了大量的磁盘空间。以下是 du
命令的一些常见参数及其用法:
基本用法
du
: 在不带任何参数的情况下使用,du
会列出当前目录及其子目录的所有文件和目录占用的磁盘空间量,默认单位是KB。常用参数
-a
或--all
: 显示目录中每个文件的磁盘使用量,而不仅仅是目录。-h
或--human-readable
: 以人类可读的格式显示大小(例如,自动选择KB、MB、GB作为单位)。-s
或--summarize
: 仅显示总计,只列出每个参数的总磁盘使用量而不列出子目录或文件的大小。-c
或--total
: 除了列出各个目录和文件的大小,还会在输出的最后一行显示总和。-x
或--one-file-system
: 仅检查和显示当前文件系统的磁盘使用情况,避免列出其他挂载点的文件系统。--max-depth=N
: 显示目录树下N级的磁盘使用情况。示例
du -h
: 显示当前目录及其子目录的磁盘使用量,大小用人类可读的格式(例如,1K、234M、2G)。
du -sh
: 以摘要形式显示当前目录的总磁盘使用量,大小用人类可读的格式。
du -ah
: 显示当前目录中所有文件和目录的磁盘使用量,大小用人类可读的格式。
du -c
: 显示当前目录及其子目录的磁盘使用量,并在最后一行显示它们的总和。
du --max-depth=1
: 显示当前目录中每个子目录的磁盘使用量,但不超过一级子目录深度