【C++八股-第14期】Linux常用命令
感谢花花,你必Offer
提纲:
👉 八股:
说一下你常用的Linux命令
如何以root权限运行一个程序
Linux怎么查看进程运行状态
Linux怎么查看内存使用情况
怎么用tar解压文件
介绍一下Linux文件权限及修改方法
介绍一下Linux常见信号及含义
现在有一个日志文件,想从里面查找某一关键字应该怎么做
你用过
ping
命令么Linux开机如何自动执行某一脚本
1. 说一下你常用的linux命令
man |
帮助命令 |
ls |
查看当前文件与目录信息 |
cd |
用于切换当前目录 |
pwd |
用于显示工作目录 |
mkdir |
用于创建文件夹 |
rm |
删除文件或文件夹命令 |
rmdir |
从一个目录中删除一个或多个子目录项 |
mv |
移动文件或文件夹命令 |
cp |
复制命令 |
cat |
查看文件内容 cat 1.log ;连接文件 |
more |
以一页一页的方式显示文件内容 |
less |
与 more 类似,但使用 less 可以随意浏览文件 |
grep |
分析一行的信息,若有所需信息则显示该行,常与管道命令一起使用,用于对一些命令的输出进行筛选加工 |
ps |
查看进程情况 |
top |
查看操作系统的信息,如进程、CPU占用率、内存信息等 |
kill |
向进程发送终止信号 |
2. 如何以root权限运行一个程序
- 使用
sudo
命令
# 以root权限运行ls命令
sudo ls /root
# 以root权限启动某个服务
sudo systemctl start apache2
- 切换到root用户:
# 你也可以切换到root用户后运行程序:
sudo su -
- 将文件设置为以root权限运行
sudo chown root [app] # 将文件的所有者更改为root用户。
sudo chmod u+s [app] # 设置setuid位,这样当该程序被任何用户执行时,它将以文件所有者
3. linux怎么查看进程运行状态
ps |
显示当前进程的状态。 | ps aux |
top |
实时显示系统中各个进程的资源使用情况。 | top |
htop |
类似top ,但功能更强大,且支持交互操作(需要安装)。 |
htop |
pidof |
查找并显示指定程序的进程ID。 | pidof firefox |
pgrep |
查找并显示与指定模式匹配的进程ID。 | pgrep -l bash |
pstree |
树形显示进程。 | pstree |
systemctl |
查看系统服务状态。 | systemctl status nginx |
service |
查看系统服务状态(传统方式)。 | service nginx status |
4. linux怎么查看内存使用情况
free |
显示系统中物理内存和交换内存的使用情况。 | free -h |
vmstat |
显示虚拟内存统计信息。 | vmstat |
top |
实时显示系统中各个进程的资源使用情况。 | top |
htop |
类似top ,但功能更强大,且支持交互操作(需要安装)。 |
htop |
cat /proc/meminfo |
显示内存详细信息。 | cat /proc/meminfo |
dmidecode |
显示系统硬件信息,包括内存信息(需要root权限)。 | sudo dmidecode -t memory |
5. 怎么用tar解压文件
tar
解压文件的参数
-x |
解压文件。 | tar -xvf archive.tar |
-v |
显示解压过程。 | tar -xvf archive.tar |
-f |
指定归档文件。 | tar -xvf archive.tar |
-z |
处理gzip压缩的文件。 | tar -xzvf archive.tar.gz |
-j |
处理bzip2压缩的文件。 | tar -xjvf archive.tar.bz2 |
-J |
处理xz压缩的文件。 | tar -xJvf archive.tar.xz |
-C |
解压到指定目录。 | tar -xvf archive.tar -C /path/to/directory |
例如,要解压一个名为archive.tar.gz
的文件并将其内容解压到/opt
目录,可以使用以下命令:
tar -xzvf archive.tar.gz -C /opt
6. 介绍一下linux文件权限及修改方法
Linux文件的基本权限分为身份和每个身份对应的权限
三种身份:
- 所有者(owner)
- 组(group)
- 其他人(others)
每种身份都有三种权限:
- 读(read)
- 写(write)
- 执行(execute)
在Linux系统中,文件权限的设置与修改通常使用 chmod
命令。
-rwxrwxrwx # 10位
[文件类型符号 1位][owner rwx权限 3位][grop rwx权限 3位][others rwx权限 3位]
文件类型符号解释
- |
普通文件 |
d |
目录 |
l |
链接文件 |
b |
块设备文件 |
c |
字符设备文件 |
权限字符解释
r |
读 | 4 |
w |
写 | 2 |
x |
执行 | 1 |
每种身份的权限由这三种权限的数值相加得到。例如:
-
权限字符:
rwx
- 数值:4(读)+ 2(写)+ 1(执行)= 7
权限字符与权限数值的示例
-rwxrwx--- |
rwx |
rwx |
--- |
770 |
修改文件权限的命令
chmod [-R] [三位权限数值] 文件或目录
# 例如:
chmod 770 test.c
# 这条命令将 douya.c 文件的权限修改为 770,即:
# 所有者:读、写、执行权限(rwx,数值 7)
# 组:读、写、执行权限(rwx,数值 7)
# 其他人:无权限(---,数值 0)
7. 介绍一下linux常见信号及含义
1 | SIGHUP * |
挂起信号。当用户终端连接(正常或非正常)结束时,通常系统会发出这个信号给每一个会话内的进程,通知它们终止。许多守护进程在收到这个信号时会重新读取配置文件而不是终止。 |
2 | SIGINT | 中断信号。程序终止(interrupt)信号。发送这个信号相当于在键盘上按下Ctrl+C。 |
3 | SIGQUIT | 退出信号。和SIGINT类似,但由Quit键(通常是Ctrl+)来控制。进程在因收到SIGQUIT退出时会产生core文件,在此意义上类似于一个程序错误信号。 |
9 | SIGKILL * |
杀死信号。用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。 |
15 | SIGTERM * |
终止信号。正常结束进程的信号,kill命令的默认信号。 |
18 | SIGCONT | 继续执行信号。可以恢复一个暂停的进程。本信号不能被阻断。 |
19 | SIGSTOP | 停止信号。可以暂停前台进程,相当于输入Ctrl+Z快捷键。本信号不能被阻断。 |
20 | SIGTSTP | 暂停信号。停止进程,但该信号可以被处理和忽略。按下Ctrl+Z键时发出这个信号。 |
17 | SIGCHLD * |
子进程结束信号。子进程结束时,父进程会收到这个信号。 |
11 | SIGSEGV | 段错误信号。无效内存引用。 |
8 | SIGFPE | 浮点异常信号。在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等其他所有的算术运算错误。 |
14 | SIGALRM | 计时器信号。时钟定时信号,计算的是实际的时间或时钟时间。alarm函数使用该信号。 |
13 | SIGPIPE | 管道破裂信号。向一个没有读进程的管道写数据。 |
10 | SIGUSR1 | 用户自定义信号1。 |
12 | SIGUSR2 | 用户自定义信号2。 |
8. 现在有一个日志文件,想从里面查找某一关键字应该怎么做
cat 1.log | grep 'ERROR'
grep '关键字' 文件名 |
基本查找 | grep 'ERROR' app.log |
grep -n '关键字' 文件名 |
显示匹配行的行号 | grep -n 'ERROR' app.log |
grep -i '关键字' 文件名 |
忽略大小写查找 | grep -i 'error' app.log |
grep -r '关键字' 目录 |
递归查找目录中的文件 | grep -r 'ERROR' /path/to/directory |
grep -c '关键字' 文件名 |
显示匹配的行数 | grep -c 'ERROR' app.log |
`grep -E '关键字1 | 关键字2' 文件名` | 查找多个关键字 |
grep -A num -B num '关键字' 文件名 |
显示匹配行及其前后几行 | grep -A 2 -B 2 'ERROR' app.log |
9. 你用过ping
命令么
ping
是一个网络诊断工具,用于测试主机与目标主机之间的网络连通性。它基于ICMP(Internet Control Message Protocol)协议,通过发送ICMP Echo请求消息来检测目标主机是否可达,并测量往返时间(Round-Trip Time, RTT)。
# 基本用法
ping [选项] 目标主机
-c count |
指定发送ICMP请求的次数 | ping -c 4 example.com |
-i interval |
指定发送每个请求之间的间隔时间(以秒为单位) | ping -i 2 example.com |
-W timeout |
指定等待每次回复的超时时间(以秒为单位) | ping -W 2 example.com |
-s packetsize |
指定发送数据包的大小(以字节为单位) | ping -s 64 example.com |
-t ttl |
指定IP数据包的存活时间(TTL,Time to Live) | ping -t 64 example.com |
-a |
在接收到回复时发出声音 | ping -a example.com |
-v |
使用详细模式输出更多的调试信息 | ping -v example.com |
-f |
以洪水模式发送请求,仅限root用户使用 | ping -f example.com |
-D |
在每个回复消息前打印时间戳 | ping -D example.com |
-Q tos |
设置服务类型字段(TOS,Type of Service) | ping -Q 0x10 example.com |
10. Linux开机如何自动执行某一脚本
① 使用 rc.local
文件
/etc/rc.local
文件是一个常见的脚本文件,用于在系统启动后执行命令。以下是使用该文件的步骤:
# 打开或编辑 /etc/rc.local
sudo vim /etc/rc.local
# 在文件末尾添加你希望开机自动执行的命令。例如:
#!/bin/bash
bash /home/user/1/start.sh
# 保存退出,并确保 rc.local 文件是可执行的
sudo chmod +x /etc/rc.local
② 使用 crontab
crontab
是一个定时任务调度工具,可以配置系统在启动时运行特定命令。以下是配置步骤:
# 编辑 root 用户的 crontab 文件:
sudo crontab -e
# 添加以下行来在系统启动时执行命令
@reboot /path/to/your/command
③ 使用 systemd
服务
systemd
是现代Linux发行版中使用的系统和服务管理器。可以通过创建 systemd 服务单元文件来实现开机自动执行命令。
# 创建一个新的服务单元文件,例如 myservice.service:
sudo vim /etc/systemd/system/myservice.service
# 添加一下内容
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/path/to/your/command
Restart=always
[Install]
WantedBy=multi-user.target
# 保存并退出,然后重新加载 systemd 配置:
sudo systemctl daemon-reload
# 启用并启动服务:
sudo systemctl enable myservice
sudo systemctl start myservice
[注意] 修改 ~/.bashrc
仅在用户登录时生效
# 打开 ~/.bashrc 文件:
vim nano ~/.bashrc
# 在文件末尾添加你希望在用户登录时自动执行的命令
/path/to/your/command
# 保存并退出文件,然后使修改生效
source ~/.bashrc
# ps:一些终端设置也可以在这里添加