知识点-Linux

记录 Linux 与 Git 相关知识点。

会一直持续更新。

1. Linux内核是什么?

Linux内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

  • 系统内存管理
  • 应用程序管理
  • 硬件设备管理
  • 文件系统管理

2. 什么是 CLI?GUI?

CLI:命令行界面(command-line interface,简称 CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面。

GUI:图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

3. Linux 使用的进程间通信方式有哪些?

  • 管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
  • 信号(signal) 。
  • 消息队列。
  • 共享内存。
  • 信号量。
  • 套接字(socket)

4.什么是 root帐户

root 帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装 Linux 时都是默认帐户。

5. 硬链接和软链接?

硬链接:

由于 Linux 下的文件通过索引节点 (inode) 来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个一个硬链接,文件的链接数就加 1 。

不足:1)不可以在不同文件系统的文件间建立链接;2)只有超级用户才可以为目录创建硬链接。

软链接 :

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

实际场景下,基本是使用软链接。总结区别如下:

  • 硬链接不可以跨分区,软件链可以跨分区。
  • 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
  • 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。

Linux常见命令

pwd

功能:显示当前用户所在目录

pwd

ls

功能:

对于目录:ls将列出该目录下所有子目录与文件
对于文件:ls将列出文件名及其他信息

1
2
3
4
5
ls [选项] [目录或文件]
选项 说明
-a 查看当前目录下的文件,包括隐藏文件
-l 长格式显示文件
-lh 以方便阅读的长格式显示

cd

功能:改变工作目录,将当前工作目录改变到指定目录下

1
2
3
4
5
6
7
8
cd [目录名]
命令 说明
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd ~ 返回家目录
cd / 切换根目录
cd /home/chaopro/data 绝对路径
cd ./data 相对路径

man

功能:连机查找指令用法

man 指令

grep

功能:用于查找文件里符合条件的字符串

1
2
3
4
5
6
grep [选项] '字符串' 文件名
选项 说明
-a 将binaray文件以text文件的方式查找数据
-c 计算找到‘查找字符串’的次数
-i 忽略大小写
-v 反向选择,即显示出没有‘查找字符串’的行

find

功能:在指定目录下查找文件

1
2
3
4
5
find [路径] [选项]
选项 说明
-name test 查询名为text的文件
-size +100k 文件大于100k的文件
-ctime n 过去n天被修改过的文件

chmod

功能:控制用户对文件的权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
chmod [选项] 文件名

选项 说明
-r 赋予读权限
-w 赋予写权限
-x 赋予执行权限
777 赋予读、写、执行权限(读:4,写:2,执行:1)
说明:(以-rw-r--r-x的权限为645为例)

权限显示位共10位,分为4段,从第2位开始,每3个一组
第1位为文件类型(-表示普通文件)
第2-4位为用户权限(rw-:4+2=6)
第5-7位为用户所属组权限(r--:4)
第8-10位为其他用户权限(r-x:4+1=5)

ps

功能:用来列出当前正在运行的进程

1
2
3
4
5
6
7
ps [选项]
选项 说明
-A 列出所有进程(!)
-ef 查看全格式的所有进程(!)
-w 显示加宽可以显示较多资讯
-au 显示较详细的咨询
-aux 显示所有包含其他使用者的进程

kill

功能:用于删除执行中的程序或工作

1
2
3
4
5
6
7
8
kill [选项]/[信号] 进程号
选项 说明
-l 列出全部的信息名称
-s 指定要送出的信息
信号 说明
-1(HUP) 重新加载进程
-9(KILL) 杀死进程
-15(TERM) 正常停止一个进程

tail

功能:查看测试项目的日志:一般测试项目中有log目录文件会存放xxx.out文件,可以用tail -f动态实时查看日志

1
2
3
4
5
6
7
tail [选项] 文件名
选项 说明
-f 实时读取
-1000 查看最近1000行日志
例子
tail -f /opt/usr/log/momenta/mff_main_node.log.(⾃动补全Tab键) | grep -i objectdisp

netstat

功能:查看端口

1
2
3
4
5
netstat -anp | grep 端口

-a,显示所有
-n,不用别名显示,只用数字显示
-p,显示进程号和进程名

date

功能: 查看当前系统时间

ping

功能:检测是否与主机连通

ping ip地址

mkdir

功能:创建空目录

1
2
3
4
mkdir [选项] [路径] 文件名
选项 说明
-p 层级创建
-v 显示创建顺序

rmdir

功能:删除空目录,但不能删除非空目录,也不能删除文件

1
2
3
rmdir [选项] [路径] 目录名
选项 说明
-p 子目录被删除后,如果父目录也变成空目录的话就连带父目录删除

touch

功能:新建空文件

touch [路径] 文件名

rm

功能:删除文件或目录

1
2
3
4
5
rm [选项] 文件名
选项 说明
-f 强制删除
-r 多级删除
-rf 强制删除给定目录下所有文件和目录

rm和rmdir的区别:

rmdir只能删除空目录,不能删除文件
rm带上选项-r可以删除非空目录

mv

功能:移动文件

1
2
3
4
mv [选项] [路径] 旧文件名 [新路径] [新文件名]
选项 说明
-f 如果目标文件已存在,不会询问直接覆盖
-i 如果目标文件存在,会询问是否覆盖

cp

功能:复制文件或目录

1
2
3
4
5
6
cp [选项] [路径] 旧文件名 [新路径] [新文件名]
选项 说明
-f或–force 强制复制,无论目标文件或目录是否存在
-i或–interactive 覆盖前会询问
-r 递归处理,将指定目录下的文件与子目录一并处理,若源文件或目录的形态不属于目录或符号连接,则一律视为普通文件处理
-R或–recursive 递归处理,将指定目录下的文件与子目录一并处理

cat

功能:查看目标文件的内容

1
2
3
4
5
cat [选项] 文件名
选项 说明
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行

tar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
选项	说明
-c –create 建立新的备份文件;
-C –directory= 切换到指定的目录;
-f –file= 指定备份文件(注意:-f 是最后的参数,只能接文件名);
-r –append 新增文件到已存在的备份文件的结尾部分;
-u –update 仅置换较备份文件内的文件更新的文件;
-v –verbose 显示指令执行过程;
-x –extract或–get 从备份文件中还原文件;
-z –gzip或–ungzip 通过gzip指令处理备份文件;

tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar -xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip

git 常见命令

git init

用当前目录作为Git仓库,在当前目录下生成.init文件夹,并且会默认生成一个master分支。

git clone

从Git仓库拷贝项目

git config

配置信息,配置用户名和邮箱地址,便于我们将代码提交到远程仓库

git add

添加文件到缓存命令

添加全部文件到缓存:

1
git add .

git status

查看文件的状态命令

git diff

  执行 git diff 来查看更新的详细信息。

​ 与git status不同的是,git status只显示更新的状态,而 git diff 可以显示已写入缓存与已修改但尚未写入缓存的改动的区别具体的详细信息。

git commit

git commit 将缓存区内容添加到仓库中,可以在后面加-m选项,以在命令行中提供提交注释,格式如下:

1
git commit -m "第一次版本提交"

git rm

从 Git 中移除某个文件,必须要从已跟踪文件清单中移除,然后提交。

git mv

git mv 命令用于移动或重命名一个文件、目录、软连接,如要将一个test.txt文件重命名为newtest.txt,则可以使用如下命令:

1
git mv test.txt newtest.txt

Git 分支管理

git branch

git branch可以查看分支,也可以创建分支,如果没有参数时,git branch会列出你在本地的分支;如果有参数时,git branch就会创建改参数的分支。

**git checkout **

git checkout可以切换分支,命令格式如下:

1
git checkout branchname

合并冲突

  合并的时候,最大的难点就是冲突了,合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

​ 如果我们在两个分支中同时修改了同一个文件,这时再合并,就可能会产生冲突。

​ 冲突并不可怕,可怕的是要怎样去解决,下面以一个小的例子来展示一下合并是冲突的解决。4

远程仓库

git remote add

git remote add可以添加一个远程仓库,其命令格式如下:

1
git remote add [alias] [url]

参数[alias]为别名, [url]为远程仓库的地址,如:我们可以将https://github.com/qtqt/test.git 仓库添加到本地,并命名为test

1
git remote add test https://github.com/qtqt/test.git

git remote

git remote可以查看当前有哪些远程仓库。

git fetchgit pull

git fetch可以提取远程仓库的数据,如果有多个远程仓库,我们可以在后面加仓库的别名。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信