【C++八股-第14期】Linux常用命令

感谢花花,你必Offer

提纲:

👉 八股:

  1. 说一下你常用的Linux命令

  2. 如何以root权限运行一个程序

  3. Linux怎么查看进程运行状态

  4. Linux怎么查看内存使用情况

  5. 怎么用tar解压文件

  6. 介绍一下Linux文件权限及修改方法

  7. 介绍一下Linux常见信号及含义

  8. 现在有一个日志文件,想从里面查找某一关键字应该怎么做

  9. 你用过ping命令么

  10. 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:一些终端设置也可以在这里添加

   

   

全部评论
每天一篇也太强了
点赞 回复 分享
发布于 07-13 09:32 河南

相关推荐

#秋招#大概1小时,20min单选,10min多选,30min大题。单选多选问的一堆偏门八股,基本都不会,靠感觉大概选的,想什么tcp连接数是65536还是65536*65536,这些玩意都靠猜,多选没几个敢肯定的,就记得一个问tcp连列到不存在的ip会咋样--这个应该是同一局域网不发syn,不同网发多次连不上断开。,还有一个问java线程安全的几何,选了.HashTable,ConcurrentHashMap,CopyOnWriteArrayList。还有问voliate作用,那个我没选保证线程安全。其他的都不记得了------(因为不大会看过就忘)大题36分第一大题反转链表给出一个链表按照1 2 3 4 5 6 7...个元素进行分组,然后反转偶数组的例如1 2 3 4 5 6 7 8 9 10,第一组是1 ,第二组是2 ,3,第三组是4 , 5 , 6,第四组7 , 8,9,10.翻转后1,3,2,4,5,6,10,9,8,7.跟leetcode上的反转链表很像,区别就是每组链表数量变成了1,2,3,4.。。个这样 。那么一样做法就好,就是长度差别,核心思路一样。还可以直接用数组接住手动搞就不用烦指来指去的next指针了。第二大题递增特别数字把每两个位上绝对值相差为1的数字称为特殊数字。如123,234,432,434等等。。给出一个low和high,要求输出二者间所有的特别数字。并顺序输出,如low=10,high=100,输出10,12,21,23,32,34......等等。两种解法,一种写一个check判断一个数字是否是特殊的,然后直接暴力每个数字算一遍,简单直白,复杂度O(mn),m为数字长度。另外一种递归,每一为下一位上延伸出下一位为当前位减一,加一两条枝,然后判断是否>9,<0等剪枝。时间复杂度小不少O(9*2^m)(因为要枚举所有数字开头,且n为10^m所以说更快)但是只用了第一种做法就做完了100%,emmm,数据这么友好是我没想到的。第三题直接就是找路径,n*m的方格左上角到右下角一共有多少条可达。emmmmm,这种题不应该是第一题吗。。。。。。直接C(n-1,n+m-2)即可。---(一共走n+m-2步,要么往右要么往下,一共往下n-1步。那么就是高中数学组合数了)或者直接二维dp也行,不过时间复杂度大一点O(n*m),不知道过不过(我直接组合数学算的,要小心中间数字爆int)#我的实习求职记录#qiuzh。
查看1道真题和解析 投递阿里巴巴灵犀互娱等公司10个岗位 我的实习求职记录
点赞 评论 收藏
分享
5 18 评论
分享
牛客网
牛客企业服务