学习Linux指令
- 列出目录内容:ls
- 详细显示其中一个文件:ls + 文件名
- 显示文件内容:cat + 文件名
- MAC查看ect文件:sudo vi /etc jingyan.baidu.com/article/e8c…
- 系统运行级别:有7个运行级,从运行级0到运行级6,每一个运行级所对应的含义如下:
-
- 运行级0:关机。
- 运行级1:单用户模式,系统出现问题时可使用这种模式进入系统维护,典型的使用场景是在忘记root密码时可进入此模式修改root密码。
- 运行级2:多用户模式,但是没有网络连接。
- 运行级3:完全多用户模式,这也是Linux服务器最常见的运行级。
- 运行级4:保留未使用。
- 运行级5:窗口模式,支持多用户,支持网络。
- 运行级6:重启。
服务启动脚本概念
- 当atd设置为启动时,将会在对应的/etc/rcX.d(X代表0~6)目录下显示:S95atd-> ../init.d/atd,系统根据第一个字母S判定atd需要启动,然后会调用命令/etc/init.d/atd start; 当atd设置为关闭时,将会在对应的/etc/rcX.d目录下显示:K05atd-> ../init.d/atd,系统根据第一个字母K判定atd需要关闭,然后调用命令/etc/init.d/atd stop,这样就实现了对atd的启停控制。
获得帮助
- man + 命令名:在查看man文件的时候,可以使用上下方向键阅读文件内容,也可以按空格键翻页,还可以使用关键字来搜索。比如说在man ls的页面上,输入“/time”,按回车键,就可以看到关键字被标记了。 可以按小写字母n向下查找,也可以按大写的N向上查找,按小写字母q可以结束查看man文件。
- info:info工具是一个基于菜单的超文本系统,包括少许关于Linux Shell、工具、命令的说明文档。
LINUX用户管理
Linux用户管理
- Linux是一个多用户分时系统,想要使用系统资源,就必须在系统中有合法的账号,每个账号都有一个唯一的用户名,同时必须设置密码。
- 要确认自己的UID,可以使用以下id命令来获得.
- 要确认自己所属的用户组,可以使用以下groups命令来获得.
- 而系统用来记录用户名、密码最重要的两个文件就是/etc/passwd和/etc/shadow.
-
- /etc/passwd
Linux账号管理
- Linux用户分为根用户(root)、普通用户、系统用户3种。
- su命令:那就是使用su命令,su是切换用户的意思。
-
- su命令默认表示切换到root用户,之后只要输入root密码就可以切换身份为root了。
- su命令后面还可以加上一个“-”参数,就是键盘上的中横线。加上这个参数后,切换成root用户时,不但身份变成了root,而且还能应用root的用户环境。
- su-命令后还可以继续跟其他的用户名作为参数,这样就可以切换成指定用户的身份。值得一提的是,root用户可以使用su命令切换成任意用户而不需要密码。
- 用其他用户的身份执行命令:sudo。而sudo则通过一种可配置的方式解决了这个问题。该命令的使用方式是在sudo后跟上需要执行的命令,比如说sudo passwd user1,即使用root的身份修改user1的密码。运行该命令时,系统首先检查/etc/sudoers,判断该用户是否有执行sudo的权限,在确定有执行权限后,系统要求用户输自己的密码,如果密码输入正确,则会以root用户的身份运行passwd user1命令。
Linux例行任务管理
- 如果任务是周期性执行的,其命令为cron;如果只是在某一个特定的时间执行一次,其命令为at。如果由于特殊的原因需要禁止某些用户使用这个功能,可以将该用户的用户名添加至/etc/at.deny中。
- 每个用户都可以设置自己的crontab,如果由于特殊的原因需要禁止某些用户使用这个功能,可以将该用户的用户名添加至/etc/cron.deny中。
Linux文件管理
Linux文件目录管理
- 图:FHS
- 绝对路径:这种从根目录开始的全路径被称为“绝对路径”,绝对路径一定是以“/”开头的。
- 当前目录:pwd
操作文件
- 创建文件touch:touch test.txt。如果在使用touch命令创建文件的时候,当前目录中已经存在了这个文件,那么这个命令不会对当前的同名文件造成影响,因为它并不会修改文件的内容,虽然实际上touch确实对该文件做了“修改”—它会更新文件的创建时间属性。
- 删除文件:rm
- 移动或重命名文件:mv。后面需要跟两个参数,第一个参数是要被移动的文件,第二个参数是移动到的目录。mv除了能移动文件,该命令还能重命名文件。
- 查看文件:cat。
- 查看文件头:head。也可以使用-n参数指定显示的行数,比如head-n 20。
- 查看文件尾:tail。动态地查看文件尾,则用tail-f。
- 文件格式转换:dos2unix。就是可以把DOS格式的文本文件转变成UNIX下的文本文件。Linux和Windows系统是可以通过文件共享的方式共享文件的,当把Windows下的文本文件移动到Linux下时,会由于系统之间文本文件的换行符不同而造成文件在Linux下的读写操作有问题。
目录操作
- 创建目录:mkdir。在目录中继续创建子目录,mkdir-p dir1/dir2。
- 删除目录:rmdir和rm。rmdir它只能删除空目录,如果目录不为空(存在文件或者子目录),那么该命令将拒绝删除指定的目录。rm删除目录,rm-r。在使用rm删除目录时,最常用的组合参数是-rf,这样就不会有任何提醒了,可直接将目录删除干净。
- 文件和目录复制:cp。 cp用于复制文件和目录。如果是复制文件,其后接两个参数,第一个参数是要复制的源文件,第二个参数是要复制到的目录或复制后的文件名。1、保持原文件名:cp rm.md /dir1。2、更改文件名:cp rm.md /dir1/rm_rename.md
文件和目录的权限
- 查看文件或目录的权限:ls-al。其中,-l参数表示要求ls命令列出每个文件的详细信息,-a参数则要求ls命令还要同时列出隐藏文件。
- 查看文件或目录的权限:ls -al。
- 文件隐藏属性:Linux下的文件还有一些隐藏属性,必须使用lsattr来显示,默认情况下,文件的隐藏属性都是没有设置的。查看文件的隐藏属性需要使用lsattr命令。
- 改变文件权限:chmod。从前面内容可知,Linux下的每个文件都定义了文件拥有者(user)、拥有组(group)、其他人(others)的权限,我们使用字母u、g、o来分别代表拥有者、拥有组、其他人,而对应的具体权限则使用rwx的组合来定义,增加权限使用+号,删除权限使用-号,详细权限使用=号。假设想设置一个文件的权限是:拥有者的权限是读、写、执行(rwx) 。比如,我们定义r=4,w=2,x=1,如果权限是rwx,则数字表示为7,如果权限是r-x,则数字表示为5。
- 图:chmod
- root用户和普通用户的默认权限不同。umask概念,中文翻译为:遮罩。777用字符串表示为:rwxrwxrwx,如果遮罩值是022,用字符串表示为:----w--w-,那么前者第五位和第八位的w被遮罩掉,权限变为rwxr-xr-x,用数字表示就是755。
- 查看文件类型:file。使用ls-l令可以通过查看第一个字符判断文件类型。字母d代表目录、字母l代表连接文件,字母b代表块文件,字母c代表字符文件,字母s代表socket文件,字符-代表普通文件,字母p代表管道文件,而file命令则可以直接告诉我们文件类型,还能给出更多的文件信息。
查找文件
- find:可以使用星号通配符来模糊匹配要查找的文件名,比如想找出系统中所有以.conf结尾的文件,或以httpd开头的文件:find /-name .conf;find /-name httpd。
- 数据库locate。
updatedb:先更新数据库,非必须
locate h.conf:再查找文件
文件压缩
- gzip/gunzip
- tar:把目录/xx整合成一个文件并压缩,比如tar -zcvf xx.tgz ./xx。解压:tar -zxvf xx.tgz
Linux文件系统
磁盘
- 磁盘检验:fsck当磁盘出现逻辑错误时,可以使用fsck来尝试修复。出现此类错误比较典型的情况是当机器突然掉电时可能引发。
- badblocks:badblocks主要是用来检测磁盘的物理坏道的。
Linux逻辑卷
硬链接和软链接
- 硬链接:文件都会有一个编号,inode,多个文件名指向同一索引节点。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接指向同一文件,删除一个链接并不会影响索引节点本身和其他的链接。
- 硬链接有两个限制:
-
- 不允许给目录创建硬链接。
- 只有在同一文件系统中的文件之间才能创建链接,即不同分区上的两个文件之间不能够建立硬链接。
- 创建硬链接
mkdir hard
cd hard
touch hard1
# 查看文件信息
ls -li
# 创建硬链接
ln hard1 hard1_link
# 第三列值发生变化,该值是文件关联数。
# 该文件每增加一个硬链接该值将增1,当此数为0的时候该文件才能真正被文件系统删除。
ls -li
- 软链接
mkdir soft
cd soft
touch file1
# 创建软链接
ln -s file1 file1_slink
ls -li
-
- 创建软链接需要使用-s参数。另外还请注意,在创建软链接的前后分别使用ls-li命令,会发现软链接的inode和源文件的inode不一样,这说明软链接本身就是一个文件。
字符处理
- 管道:使用“|”连接进程,把一个命令的输出当做下一个命令的输入。
grep
- grep搜索文本:grep + 关键词 + 文件.后缀名
- 如果想打印出文件中不包含name的行,可以使用grep的反选参数-v。
- grep打印出含有关键字的行的编号:grep -n + 关键词 + 文件.后缀名
- 如果希望忽略大小写,可以加上-i参数:grep -i + 关键词 + 文件.后缀名
使用sort排序
- cat sort.txt | sort
删除重复的行
- unic [-ic]:如果相同的行非连续,则uniq命令不具备删除效果。第二次则在使用sort排序后再使用uniq命令,这时就达到了预期的效果。
- paste的作用在于将文件按照行进行合并,中间使用tab隔开:paste tom.txt sort.txt
Linux网络管理
- Linux主机之间是使用IP进行通信的,假设A主机和B主机同在一个网段内且网卡都处于激活状态,则A具备和B直接通信的能力(通过交换机或简易HUB)。
- hosts: 具体来说,hosts文件的作用主要如下:加快域名解析。当访问网站时,系统会首先查看hosts文件中是否有记录,如果记录存在则直接解析出对应的IP,这时则不需要请求DNS服务器。
网络测试工具
- ping:ping程序的目的在于测试另一台主机是否可达,一般来说,如果ping不到某台主机,就说明对方主机已经出现了问题。在Linux下ping命令并不会主动停止,需要使用Ctrl+C组合键来停止,ping命令将会对发出的请求包和收到的回应包进行计数,这样就能计算网络丢包率。
- 常见网络故障排查
-
- 1、输入ping127.0.0.1,然后看是否能正常ping通;如果ping不通,一般可以证实为本机TCP/IP协议栈有问题,自然就无法连接网络了。
- 2、第二步是要确认网卡是否出现了物理或驱动故障,使用ping本机IP地址的方式,如果能ping通则说明本地设备和驱动都正常。
- 3、ping通同网段的其他主机。
- 4、ping通网关IP。如果数据包能正常到达网关,则说明主机和本地网络都工作正常。
- 5、ping公网IP
- 6、ping通公网上的某个域名
Linux进程管理
- 进程查看:ps、top
- 进程终止:kill、killal。假设系统中的dhcpd进程由于某种原因需要终止,那么首先要查找到该进程的PID(从下面的输出中可以看到该PID为2877),然后kill这个PID。完成这个操作后再看dhcpd进程,就已经不在了。
# 查询进程id
pidof dhcpd
# 杀掉进程
kill 2877
# 不使用进程id,而是使用
- 查询进程打开的文件:lsof
-
- COMMAND:进程的名称。
- PID:进程标识符。
- USER:进程所有者。
- FD:文件描述符,应用程序通过文件描述符识别该文件。
- TYPE:文件类型,如DIR、REG等。
- DEVICE:磁盘的名称。
- SIZE:文件大小。
- NODE:索引节点。
- NAME:打开文件的全路径名称。
RPM安装软件
- macOS安装rpm:brew install rpm
- 没用过: luarocks。是可以管理lua的插件和软件包,同时可以编译lua的插件。
- 安装gcc:
brew install gcc
xcode-select --install
YUM安装软件:mac用brew即可
yum isntall
yum groupinstall Group
Vi和Vim编辑器
- vim:不仅是文本处理工具,还是一款开发工具。
- 三种模式
-
- 一般模式:使用vi打开某个文件的时候默认进入的模式就是一般模式。
- 编辑模式:在一般模式中,按i键可以进入编辑模式(这是最简单的进入方式,底部会出现“--INSERT--”字样。从编辑模式回到一般模式需要按Esc键。
- 末行指令模式。在一般模式中,按冒号键(:)或斜杠键(/)或问号键(?) 就会在当前视图的最后一行出现相应的符号,这就代表进入了相应的末行指令模式。
- 使用vi创建和编辑文件:复制:光标定位,按y两次,按p粘贴。按d两次,删除该行。按u撤销最近的一次操作。
- vim
-
- 移动光标既可以用箭头键,也可以使用 hjkl 字母键,其中h 用于左移光标,j 用于下移光标, k 用于上移光标, l 用于右移光标。
- 如果使用:q!退出vim编辑器,将不保存对文本进行的修改。
- 如果使用:wq退出vim编辑器,将保存所有对文本进行的修改。
- 在一般模式下按x键删除光标所在位置的字符。
- 在一般模式下要在光标所在位置插入文本可输入i或a键,其中i键用于在光标前插入文本,a键用于在光标后插入文本。
- 在一般模式下输入dw,将从光标当前位置直到单词末尾删除,但不包括第一个字符。
- 在一般模式下输入de,将从光标当前位置直到单词末尾删除,但不包括最后一个字符。
- 在一般模式下输入d$,将从光标当前位置直到当前行末的内容删除,且包括最后一个字符。
- 正则表达式
-
- .点符号用于匹配除换行符之外的任意一个字符。
- “”符号用于匹配前一个字符0次或任意多次。**比如“.”代表任意长度的不包含换行的字符**。
- {n,m}
-
-
- {n}:匹配前面的字符n次
- {n,}:匹配前面的字符至少n次以上
- {n,m}:匹配前面的字符n到m次
-
-
- ^这个符号用于匹配开头的字符。比如说“^root”匹配的是以字母root开始的行。
- :如果是“^”则代表该行为空,因为^和$间什么都没有。
- []:这是一对方括号,用于匹配方括号内出现的任一字符。比如说要匹配任意一个大写字母,就需要使用“-”号做范围限定,写成[A-Z],要匹配所有字母则写成[A-Za-z]。如果^这个符号出现在[]中,则代表取反。
- “ <”符号和“>”符号。这两个符号分别用于界定单词的左边界和右边界。比如说“<hello”用于匹配以“hello”开头的单词;而“hello>”则用于匹配以“hello”结尾的单词。
- “?”符号“?”符号用于匹配前一个字符0次或1次,所以“ro?t”仅能匹配rot或rt。
- “()”符号通常需要和“|”符号联合使用,用于枚举一系列可替换的字符。
- 通配符: “^”符号和“!”符号这两个符号往往和“[]”一起使用,当出现在“[]”中的时候,代表取反。所以[^A](或[!A])代表不是A。
- 实例
-
-
- grep的英文是Global search Regular Expression and print out the line,即全面搜索正则表达式并打印出匹配行。
- 使用“^”匹配行首:grep '^good'
- 使用“'
- 使用“^$”组合,匹配空行
- 在方括号中使用“^”做反选:grep '[^Gg]ood'
-