目录
问题1:Linux系统基本组件?
问题2:Linux和Unix有什么区别?
问题3:Linux下编译程序
问题4:gcc基本格式和常用指令
问题5:用什么命令查找内存和交换使用情况?
问题6:Linux常用指令汇总
问题7:软链接和硬链接的区别?
问题8:解释Linux中的文件权限?
问题9:绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
问题10:怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
问题11:Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
问题12:Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
问题13:du 和 df 的定义,以及区别?
问题14:如何在 Linux 中创建和删除目录?
问题15:如何在Linux中创建文件?
问题16:如何在Linux中重命名文件和目录?:
问题17:如何在Linux中复制文件和目录?
问题18:如何在 Linux 中调度任务?什么是 crontab 并解释 crontab 中的字段?
问题19:你知道哪些基本的 Vim 命令?
问题20:如何将二进制文件添加到 $PATH 变量中?
问题21:解释Grep命令和正则表达式?
问题22:umask和ulimit有什么区别?
问题23:解释Linux中top命令的输出?
问题24:Linux 中的进程状态有哪些?
问题25:如何在 Linux 中备份或归档文件(tar 命令)?
问题26:如何停止Linux中正在运行的进程?
问题27:如何在linux中搜索文件?:
问题28:如何检查某项服务是否在运行?
问题29:如何启动服务、停止服务、重启时启动服务?
问题30:如何远程登录另一台linux电脑?
问题31:如何查看磁盘使用情况?
问题32:如何设置Linux文件/目录权限?
问题33:如何设置文件/目录的所有权?:
问题34:如何在Linux中创建用户和组?
问题35:如何在Linux中查找内核/操作系统版本?
问题36:如何查找接口IP地址?
问题37:基于名称的虚拟主机和基于IP的虚拟主机有什么区别?
问题38:网络绑定有什么优势?
参考文章
Linux 由 4 个基本组件构成:
Kernel:这是Linux系统的核心。它负责与硬件组件交互并确保操作系统与硬件设备进行通信。
Shell: Shell 是 Linux 用户和内核之间的接口。在 shell 中,命令由用户发出,然后由操作系统执行。
系统库:这些是特殊程序或函数,它们负责实现操作系统的大部分功能,而不依赖于内核模块的代码访问权限。
系统实用程序:这些是执行某些任务的特定程序。例如 LibreOffice、Brasero、Gparted。
Linux和Unix是两个不同的操作系统,但它们有一些共同之处。Unix是最早的商业操作系统之一,而Linux是基于Unix的开源操作系统。两者都使用类似的命令行接口和文件系统结构。UNIX主要用于高端服务器、实验室等,而Linux则被用于更贴近生活的台式机、笔记本等。
(1)我们首先进入Linux系统中的一个文件夹下,输入命令:touch text.c 创建一个C文件:
(2)然后用gedit打开文件,手动输入我们的程序。
#include
int main() { printf("Hello, Linux!\n"); return 0; } (3)然后我们在终端输入:
gcc test.c -o test
(4)这时候我们看到经过编译、链接后,我们得到了可执行文件。然后我们执行:
./test
gcc基本格式
若不加入参数,则按默认参数依次执行编译、汇编和链接操作,生成的可执行文件名为
a.outgcc [options] file1 file2...
gcc常用指令
- c:只编译源文件,生成目标文件(.o 文件),不进行链接。
- o
:指定输出文件的名称。 - g:生成调试信息,用于调试程序。
- Wall:打开所有警告提示。
- E:只进行预处理,输出预处理结果。
- S:只进行编译,生成汇编代码。
- shared:生成共享库(动态链接库)。
- static:生成静态可执行文件,使用静态链接。
除了上述常用选项之外,gcc 还提供了许多其他选项和参数,用于特定的编译和链接需求。你可以通过运行 gcc --help 命令或查阅 gcc 的官方文档来获取完整的选项和参数列表。
使用free命令
命令 | 功能 |
man | 帮助命令 |
ls | 查看当前文件与目录信息 |
cd | 用于切换当前目录 |
pwd | 用于显示工作目录。 |
mkdir | mkdir 命令用于创建文件夹。 |
rm | 删除文件或文件夹命令 |
rmdir | 从一个目录中删除一个或多个子目录项 |
mv | 移动文件或文件夹命令 |
cp | 复制命令 |
cat | 查看文件内容;连接文件 |
more | more 会以一页一页的显示文件内容 |
less | less 与 more 类似,但使用 less 可以随意浏览文件 |
grep | 该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命 令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工。 |
ps | 查看进程情况 |
top | 可以查看操作系统的信息,如进程、CPU占用率、内存信息等 |
kill | 向进程发送终止信号 |
软链接和硬链接是在计算机文件系统中使用的两种不同的链接方式。
两者区别:
- 软链接:是一个指向文件或目录的引用,类似于一个快捷方式,它可以跨越不同的文件系统,并且可以指向不存在的文件或目录,软链接可以在文件或目录被删除时保留。
- 硬链接:是一个文件或目录的实际副本,它与原始文件或目录具有相同的索引节点,并且只能在同一文件系统内使用,硬链接则会在原始文件或目录被删除时失效。
命令的实现:
- 硬链接:ln
- 软链接:ln -s
Linux文件的权限
在 Linux 中,有 3 种主要类型的文件权限:读、写和执行。这些权限可以递归地分配给文件或目录。作为一个多用户系统,您可以将这些权限分配给 root 用户、组,甚至是使用该系统的其他用户。
- Read:读取权限授予使用打开和读取文件的能力。
- Write:写入权限允许用户打开和修改或编辑文件的内容并保存更改。
- Execute:这允许用户执行或运行可执行的文件或程序或 shell 脚本。
linux查看文件权限
在linux命令行中,输入:ls -la, 可以查看当前目录下面所有文件的权限
修改文件权限
可以通过命令chmod修改文件的权限,为了方便,权限用数字表示,分别用数字4、2、1表示读、写、可执行权限。并且可以进行组合,比如4 + 2 + 1 = 7,那么7表示读、写、可执行权限,4 + 2= 6表示读写权限。具体命令如下:
chmod 764 file1 chmod 777 -R dir
命令中一共有三个数字,分别对应拥有者、用户组其它用户、其它用户的权限。
764表示拥有者的权限为7(4 + 2 + 1,读写可执行),用户组其它用户权限为6(4+2,读写),其它用户权限为4(可读)。
如果是要修改一个文件夹的权限,需要加上-R,表示递归修改文件夹下面所有文件的权限。
绝对路径:如/etc/init.d
当前目录:./
上层目录: …/
主目录:~/
切换目录:cd
清屏:clear
退出当前命令:ctrl+c 彻底退出
执行睡眠 :ctrl+z 挂起当前进程 fg 恢复后台
查看当前用户 id:”id“:查看显示目前登陆账户的 uid 和gid及所属分组及用户名
查看指定帮助:如 man adduser 这个很全 而且有例子;adduser --help 这个告诉你一些常用参数;info adduesr;
“?”可替代单个字符。
“*”可替代任意多个字符。
方括号“[charset]”可替代charset集中的任何单个字符,如[a-z],[abABC]
- 不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指进程不响应异步信号。D:不可中断 Uninterruptible(usually IO)
- 暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。T:停止或被追踪
- 就绪状态:在 run_queue 队列里的状态。W:进入内存交换(从内核 2.6 开始无效)
- 运行状态:在run_queue队列里的状态。R:正在运行,或在队列中的进程
- 可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待socket 连接、等待信号量),而被挂起。S:处于休眠状态
- zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。Z:僵尸进程
- 退出状态。X:死掉的进程
du 显示目录或文件的大小
df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
创建目录
//使用 mkdir 命令 mkdir directory_name
删除目录:Linux中删除目录的方法有多种。
- 使用命令"rm -r"可以删除一个目录及其所有子目录和文件。
- 使用命令"rmdir"可以删除一个空目录。删除目录时需要谨慎,以免误删重要文件。
要创建文件,请使用 touch 命令。例如要创建一个文件 filename运行命令:
touch filename
使用 mv 命令重命名文件。请注意,要使其正常工作,要重命名的文件的路径必须相同。例如,要将/data/files目录中的文件 file1.doc 重命名为 file2.doc,请执行以下命令:
mv /data/files/file1.doc /data/files/file2.doc
在 Linux 中使用 cp 命令复制文件
cp /source/of/the/file /destination/of/the/file
Crontab是Linux中用于调度任务的工具,它通过指定时间和命令来执行任务。在crontab中有五个字段,分别表示分钟、小时、日期、月份和星期几。
这些字段的值可以是具体的数字或者通配符。通过理解crontab的字段,可以在Linux中有效地调度任务。
保存:要保存文件,请按ESC按钮并按 :wq! OR :ZZ
退出:要退出文件而不进行更改,请运行命令:q
转到文件中的特定行:
- 按ESC再按j向下移动一行。
- k按键盘上移一行
- 将光标移动到行首 按^
- 将光标移动到行尾 按$
- 将光标移动到文件的开头1G
- 将光标移动到文件末尾G
- 将光标移动到文件中行号“n”的开头nG
复制文本:将光标移动到字符串或文本的开头。接下来按键盘上的 v 并向前按光标以突出显示文本。到达要复制的文本的末尾后,请按yyank 的缩写来复制文本。
- 要将文本从当前位置复制到行尾 -y$
- 复制整行 -yy
- 要复制下面的 4 行 -4yy
粘贴文本:要粘贴文本,只需按p键盘上的
删除文本:
- 要删除一行,请移至一行的开头。按下ESC按钮并按下dd
- 要删除单个单词,请将光标放在单词前面并点击dw
- 删除从当前单词到行尾的文本d$
- 要删除下面运行的 3 行3dd
$ export PATH=$PATH:/path/to/the/binary/file
Grep 命令是用于过滤结果或输出的表达式。例如,要列出一个目录并仅搜索带有单词“cron”的文件,请运行以下命令:
ls | grep cron
Umask代表“用户文件创建掩码”,它确定掩码的设置,该掩码控制在创建文件和目录时为文件和目录设置哪些文件权限。虽然 ulimit 是一个 linux 内置命令,它提供对 shell 可用资源和/或由它启动的进程的控制。
您可以通过编辑 /etc/security/limits.conf 将用户限制在特定范围内,同时可以在 /etc/sysctl.conf 中更新系统范围的设置
top 命令是一个监控实用程序,可让用户深入了解系统指标,例如正常运行时间、平均负载、%CPU 和 % 内存利用率。
进程状态,顾名思义,是指Linux进程所处的当前状态。进程状态有4种,分别是Running、Waiting、stopped和Zombie。
要备份目录,只需运行下面的 tar 命令
tar -cvf tarball_name.tar /path/to/directory
例如,要在 /data/reports/ 路径中创建文件 sales.txt 的 tar.gz 格式的存档,请执行:
tar -cvf sales.tar.gz /data/reports/sales.txt
您还可以归档整个目录,如下所示:
tar -cvf repors.tar.gz /data/reports/
查看进程
显示现行终端机下的所有程序,包括其他用户的程序。
杀死进程
要停止正在运行的进程,请使用 kill 命令,后跟进程的 PID。例如,要停止 PID 为 3836 的进程,请运行命令
kill 1932
要在 Linux 中搜索文件,请使用locate or find命令,find和locate搜索文件有如下的区别:
要检查服务是否正在运行,请使用以下语法:
systemctl status service_name
例如,要检查 Postfix 是否正在运行,请运行以下命令:
systemctl status postfix
要在 systemd 系统中启动服务,请运行以下命令:
systemctl start
要停止服务,请运行:
systemctl stop
要在重新启动运行时启动服务,请使用以下语法:
systemctl enable
您可以使用 SSH 协议或使用 VNC 服务登录到远程 Linux 计算机。
使用该df命令检查硬盘驱动器上使用的空间和剩余空间/可用空间。
此外,使用该du命令检查特定文件和目录的使用情况。
要设置文件权限,请使用chmod命令后跟八进制值或符号值,然后是文件名或目录名。
例如分配一个文件权限值为 664 运行
chmod 664 filename
要分配目录权限,请使用-R递归分配权限的选项。
chmod -R 664 directory_name
要设置文件所有者,请使用该chown命令。例
chown user:user filename
对于目录,使用-R递归分配权限的选项。例如
chown -R user:user directory_name
要创建用户,请运行命令adduser user_name
运行命令uname -a
ifconfig命令:在终端输入ifconfig命令,它会显示当前系统中所有网络接口的配置信息,包括IP地址、子网掩码和网关等。
ip命令:在终端输入ip addr命令,它会列出当前系统中所有网络接口的详细信息,包括IP地址、子网掩码和网关等。
nmcli命令:在终端输入nmcli device show命令,它会显示网络管理器中所有网络设备的信息,包括IP地址、子网掩码和网关等。
虚拟主机用于在单个 apache 实例上托管多个域。您可以为服务器拥有的每个 IP 设置一个虚拟主机,或者相同的 IP 但不同的端口,或者相同的 IP、相同的端口但不同的主机名。后者称为“基于名称的虚拟主机”。
在基于 IP 的虚拟主机上,我们可以在同一台服务器机器上运行多个网站,但每个网站都有自己的 IP 地址,而在基于名称的虚拟主机中,我们在同一个 IP 地址上托管多个网站。但要成功,您必须在 DNS 数据库中为您的 IP 地址放置多个 DNS 记录。
Network Bonding是一个 Linux 内核功能,允许将多个网络接口聚合到单个虚拟链接中。这是在生产系统中实现冗余链路、容错或负载平衡网络的好方法。如果其中一个物理 NIC 关闭或拔出,它会自动将流量转移到另一个 NIC 卡。类似地,绑定将增加接口吞吐量以处理在主动-主动模式下配置的流量。
(1) 面试必备,Linux面试题和答案!_linux面试题及答案-CSDN博客
(2) gcc命令语句大全-CSDN博客
(3) 48 个 Linux 面试问题和答案_linux面试题_太极淘的博客-CSDN博客