关于linux实用命令学习以及重要知识点

原文: https://blog.csdn.net/xyz_dream/article/details/90314508





前言

本来这几天复习linux常用的命令,自己本来想写上一些记录的笔记。不过在github上搜到一个仓库,写得还挺全面的。和自己复习的内容所差无几,所以就没必要在博文中写出来了,重复同样的劳动,何况自己写得不比别人写得好到哪去。

仓库地址: https://github.com/Nick233333/phper-linux-gitbook


我的感悟

linux里面一些命令以及知识点,有必要写一下,对日常工作还是有所帮助。 只是会命令,不了解命令所牵扯到的知识点,那也是枉然,很多东西你都不知道怎么去做。

1.Linux运行级别以及开机启动

linux在自检,centos7启动systemd第一个进程的时候。 接下来 会去读取 /etc/inittab里面定义好的系统运行级别。

  1. 关机

    1.单root用户 无网络系统(一般管理员用到)

    2.多用户 无网络模式

    3.多用户 有网络(正常的命令行模式)

    4.保留(目前没用)

    5.图形化模式

    6.重启

    接下来确定好运行模式之后,会去读取/etc/rc.d/$runlevel.d/目录下的脚本 作为初始化脚本运行。 centos7 可以在 /ect/rc.d/rc.local中 加入自己的开机要启动的脚本命名内容。 默认rc.local没有 执行权限, 首先执行以下 chmod +x rc.local即可。 对于要开机启动某些特定服务,可以使用 systemctl enable 服务名称 。



    2.Linux的文件系统之inode


    参考大神阮一峰的博客:

    http://www.ruanyifeng.com/blog/2011/12/inode.html

    个人总结:

    linux中文件的名字和文件具体数据内容是单独隔离开来的,只是通过某种”引用”或者说”地址指向”的机制把两者关联在一起罢了。 inode才是一个文件真实的唯一id。 但是要注意,这个”inode”的id仅仅只是在某个分区内是唯一的, 不能保证其他分区没有相同inode一样的节点。 所以这里要注意 ln 创建 “硬链接”和”软链接”的区别了。php中的变量名和实际数据内存地址其实也是参考这个模型(引用计数器),个人猜测。




    1.硬链接是两个文件名称引用同一个inode。inode引用计数会随着每当有一个文件名称指向它,便加1 反之就减1。假如一个inode的引用计数变为0, 也就以为着文件被删除。 硬链接不支持针对目录创建, 不支持跨分区创建。




    2.软链接。说白了,就是存放了所指向文件的路径罢了。 只不过linux在你访问这种类型的文件时,不会去读取它里面路径字符串, 而是 读取路径所在的内容。 所以 可以跨分区, 支持对目录创建软链接。 但是 源文件inode不会+1。



    3.文本内容要注意坑


    1.之前利用phpstorm远程开发,本地修改代码后,phpstorm会自动帮你上传文件到远程服务器。 但是注意,针对shell脚本,在windows上传到linux可能在linux上执行不起来。 后来搞了半天,在linux上写一句简单的echo “hello world”还是执行不起来。 通过网上查找, vim 进入命令模式 : set ff 查看文件格式显示windows。 set ff=unix立即解决。所以尽量针对 编译 shell脚本等等不要使用windows编写。



    2.vim遇到 不能使用右键”粘贴”文本功能。 进入命令行模式 :set mouse-=a


    3.文本内容看起来一模一样,但是脚本就是执行失败,建议hexdump test.sh 查看文本内容的16进制数据比较,肯定是不一样的。 肉眼看不出来


    4.不要以文件名后缀轻易判断文件类型,linux文件类型和后缀毫无关系。有后缀只是让管理人员较为轻易的管理文件罢了。 使用 file 命令可以查看文件真实的数据类型。



    4.I/O重定向问题


    这个可以查看我的上一篇文章,把重定向的具体含义明明白白告诉你。

    地址: https://blog.csdn.net/xyz_dream/article/details/89547687



    5.涉及DNS


    参考大神阮一峰的博客: http://www.ruanyifeng.com/blog/2016/06/dns.html


    涉及到的命令以及配置文件:


    1.host www.baidu.com #查看映射的ip地址

    2.dig +trace www.baidu.com #跟踪dns解析过程

    +short mojun.me #直接输出A映射的ip地址

    3.nslookup www.baidu.com #查看dns信息

    4.修改本地的dns服务器配置 。 vim /etc/resolve.conf

    nameserver 114.114.114.114 #电信公共dns解析服务器

    nameserver 8.8.8.8 #Google公共dns解析服务器



    6.涉及网络层以及TCP



    一. ss / netstat 命令

两者参数差不多,不过ss命令比netstat命令快很对。 ss直接拿到内核第一手资料,netstat则多绕了一点。

#ip类型
-4 #ipv4
-6 #ipv6

#传输层
-t #tcp
-u #udp

-n #信息直接以数字的形式输出 默认以服务形式。 例如 22端口 显示 sshd 但是 -n参数会把 端口号信息打印为 22
而不是 sshd

-l #连接处于 listen状态的
-a #列出所有状态的连接信息

-p #进程pid
-m #所占用内存情况

一般用法:

ss -lnt #以数字形式的信息查询 正在listen的tcp连接信息

netstat -lnt #和上面ss一样 只是两个命令可能有些不一样而已