linux学习总结【指令+基本概念】

Linux基础

1、linux基本指令

1)文件和目录

cd /etc 进入etc目录 
ls -l 显示文件和目录的详细资料 
mkdir dir1创建一个目录 dir1
rm -f file1 删除叫做 'file1' 的文件'
mv dir1 newdir 重命名/移动 一个目录 
cp file1 newfile 复制一个文件 

unzip file1.zip 解压一个zip格式压缩包 

tar -zxvf archive.tar.gz 解压一个gzip格式的压缩包 
zip file1.zip file1 创建一个zip格式的压缩包 

cat file1 查看文件的内容 

vi/vim  file1  vi模式编辑文件

 

2)文件的权限

使用 "+" 加权限,"-" 用于取消,所有人(u)、群组(g)以及其他人(o)

读(r)写(w)和执行(x)的权限 u g o + - r w x   

chmod u+w my.cnf    chmod ug+w my.cnf

 

3)RPM安装包,适用 Fedora, Redhat及类似系统
rpm -ivh package.rpm 安装一个rpm包(带进度条,所需依赖包)
rpm -ivh --nodeeps --force *.rpm忽略依赖,强制安装目录下所有安装包
rpm -e package_name.rpm --nodeeps删除一个rpm包,忽略依赖,但要求不可强制卸载
rpm -qa | sort显示系统中所有已经安装的rpm包 (有序)
rpm -qa | grep jdk 显示所有名称中包含 "jdk" 字样的rpm包 
rpm -qi package_name 获取一个已安装包的特殊信息(所包含依赖)

 

4)YUM 软件包升级器,适用 Fedora, Redhat及类似系统 
yum install package_name 下载并安装一个rpm包 

yum install --downloadonly --downloaddir=/tmp <package-name>只下载不安装指定目录
yum update package_name 更新一个rpm包 
yum list 列出当前系统中安装的所有包 
yum clean all 删除所有缓存的包和头文件

yum makecache 把服务器的包信息下载到本地电脑缓存起来

 

Yum是一个在RedHatCentOS中软件包管理器。RPM包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 

yum 机制的强大之处在于yum 源。yum 源相当是一个目录项,当我们使用 yum 机制安装软件时,若需要安装依赖软件,则 yum 机制就会根据在 yum 源中定义好的路径查找依赖软件,并将依赖软件安装好。yum 源分为网络yum 源和本地 yum 源。 

   yum 源配置文件有两个。一是直接配置在/etc/yum.conf 中,其中包含一些 主要的配置信息。另外就是/etc/yum.repos.d/下的 xx.repo 后缀文件, 默认都会被加载进来。CentOS默认的yum源在线安装及更新速度不是很理想。这时候需要将yum源设置为国内镜像站点。国内主要开源的开源镜像站点应该是网易和阿里云了。修改CentOS默认yum源为mirrors.163.com(经验主要修改配置文件就可以)

EPEL源是由Fedora社区创建维护,为RHEL及衍生发行版如CentOS、Scientific Linux 等提供高质量软件包的项目。EPEL中含有大量的软件,对官方标准源是一个很好的补充。(可以添加多源,在阿里云下用epel源)

 

5)网络、服务和防火墙(端口)

ping ip     telnet ip iport  端口是否有服务

查询启动失败的服务列表:

systemctl --failed

查看服务状态,启动,停止,开机自启

systemctl status start stop enable mysql.service

刷新服务

systemctl daemon-reload

 

防火墙(centos7用firewall)

查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

firewall-cmd --state

查看开放的端口

firewall-cmd --list-ports  

查看8080端口是否开启

firewall-cmd --query-port=8080/tcp

开启8080端口

firewall-cmd --add-port=8080/tcp --permanent  # --permanent 永久生效,

刷新防火墙

firewall-cmd --reload

启动防火墙

systemctl stop  restart  enable  firewalld.service

解锁防火墙

systemctl unmask firewalld.service


6)创建软链
ln -s file1 lnk1 创建一个指向文件或目录的软链接 

ln -s /etc/init.d/mysql /etc/rc3.d/S99mysql

删除软链

rm -rf /etc/rc3.d/S99mysql

linux的文件和目录在文件系统中存储方式
在文件系统中,文件创建的时候系统会给文件分配一个node,该node有存储文件真实数据的block信息,同时也会确定文件和文件所在目录的关系,关系是这样的,目录在创建的时候,系统也会给目录分配一个node,node指向的block存放这该目录下的文件名和对应的文件node,这样文件和目录的关系就此建立。

touch 123        //我们创建一个名为 123 的文件

ls -i            //使用 ls -i命令查看文件123的inode 值

此时,返回值为926561 123   说明文件123的 inode值为 926561 

mv 123 ../123        //利用 mv 指令将文件 123 移动到上级目录下

此时,返回值为926561 123,文件 123 的 inode 值并没有发生改变

总结:使用 mv 指令移动文件的时候,并不会更改文件的 inode 值。

cp 123 789        //利用 cp 指令,复制文件 123 ,复制后的文件名为 789

此时,返回值为926561 123  928115 789

我们发现,复制出来的 789 的 inode 值发生了变化

总结:使用 cp 指令复制文件的时候,会对文件的 inode 值作出更改。

这里的 inode 值不变的情况,我们就称作 硬链接 ,inode 值发生变化的则称为 软链接 (也叫符号链接)。建立这种链接的好处在于可以解决 Linux 的文件共享问题,还可以有隐藏文件路径,增加权限安全及节省存储等效果。

使用 ln 指令创建文件链接的时候,默认创建的就是硬链接

使用 ln 创建软链接呢 -s  就可以了

 

软链接

文件软链接在创建的时候是在所在的目录下创建一个新的文件,所在目录的block(用于存放文件名和对应node)中的node指向的是源文件所在目录的node,再通过源文件所在目录的node找到源文件名和对应node号,再找到这个源文件的node号,最后才找到源文件。也就是说,软链接是通过源文件的目录node找到源文件,并不直接指向源文件的node

ln -s 源文件名 目标名(注意如果是创建文件软链接,目标名是一个文件名,如果建立目录软链接的时候,这个地方是一个位置不是名字,否则会在目标位置的下一层目录创建软链接)

硬链接

文件硬链接创建的时候会在所在目录下的一个block记录硬链接文件名和源文件的node,注意他直接找到源文件的node,没有通过源文件的目录。无法创建目录硬链接

 

Linux程序编译链接动态库版本的问题

不同版本的动态库可能会不兼容,如果程序在编译时指定动态库是某个低版本,运行是用的一个高版本,可能会导致无法运行。Linux上对动态库的命名采用libxxx.so.a.b.c的格式,其中a代表大版本号,b代表小版本号,c代表更小的版本号,我们以Linux自带的cp程序为例,通过ldd查看其依赖的动态库,左边是依赖的动态库名字,右边是链接指向的文件,

$ ldd /bin/cp                                                                                                                                                                                        

linux-vdso.so.1 =>  (0x00007ffff59df000)

libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb3357e0000)

librt.so.1 => /lib64/librt.so.1 (0x00007fb3355d7000)

libacl.so.1 => /lib64/libacl.so.1 (0x00007fb3353cf000)

 

再查看libacl.so相关的动态库

$ ll /lib64/libacl.so*                                                                                                                                                                               

lrwxrwxrwx. 1 root root   /lib64/libacl.so.1 -> libacl.so.1.1.0

-rwxr-xr-x. 1 root root  /lib64/libacl.so.1.1.0

libacl.so.1实际上是一个软链接,它指向的文件是libacl.so.1.1.0

我们往往是在机器A上编译程序,在机器B上运行程序,编译和运行的环境其实是有略微不同的。

 $ readelf -d /lib64/libc-2.12.so                                                                                                                                                                      

Dynamic section at offset 0x18db40 contains 27 entries:

Tag        Type                         Name/Value

0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]

0x000000000000000e (SONAME)             Library soname: [libc.so.6]

soname它相当于一个中间者,当我们的动态库只是升级一个小版本时,我们可以让它的soname相同,而可执行程序只认soname指定的动态库,这样依赖这个动态库的可执行程序不需重新编译就能使用新版动态库的特性(直接把高版本的动态库放到 /usr/lib(默认放到这里)下,系统会自动加载)

 

7)升级glibc

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

glibc 和 libc 都是 Linux 下的 C 函数库。libc 是 Linux 下的 ANSI C 函数库;glibc 是Linux下的GUN C函数库。 
   glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。 Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。

 

8)图形化界面和命令行

linux运行级别

命令行的运行级别:3     图形界面的运行级别:5

查看当前运行的级别 runlevel

 

9)远程连接

CRT工具(命令行),和vnc(图形化界面)

VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值