【方向盘】达到Linux第三阶段的常用命令笔记记录---PartⅠ(中)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【方向盘】达到Linux第三阶段的常用命令笔记记录---PartⅠ(中)

SSH命令


SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。


ssh命令用于远程登录上Linux主机。一般我们会配置成免密码的方式登录


常用格式:ssh [-l login_name] [-p port] [user@]hostname


备注:ssh可以通过ssh 主机名的方式登录到远程机器。需要修改主机的hostname配置:

image.png

不指定用户,默认利用当前宿主用户的用户名登录



ssh 192.168.0.11

指定用户登录,若需要密码,加-p password参数即可

ssh root@192.168.0.11

若修改过端口,可以指定端口登录

ssh -p 12333 root@192.168.0.11


/

登录到远程主机后立刻执行某个命令(当然也可以执行脚本)


ssh omd@192.168.1.100 "ls /home/fangshixiang"


image.png



SSH为啥安全呢?


SSH之所以能够保证安全,原因在于它采用了公钥加密。


(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。


这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

口令登录(用户名、密码登录)

image.png

公钥登录

image.png


远程主机的authorized_keys文件


远程主机会将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。


不使用上面的ssh-copy-id命令,改用下面的命令,这样也是okl的,只是比较麻烦:

$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub


image.png


scp(ssh提供的功能支持)


scp在夸机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入。


远程文件的安全(加密)拷贝


scp是加密远程拷贝,cp为本地拷贝。每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync


命令格式:

scp [参数] [原路径] [目标路径]

-P port 注意是大写的P, port是指定数据传输用到的端口号

-r 递归复制整个目录(复制目录一般都需要带上此参数)


scp -P52722 demo.txt fangshixiang@10.102.131.178:/home/fangshixiang


这样子就把我的机子的demo.txt文件拷贝到了远程机器10.102.131.178的指定目录下了。

交换给位置,就可以把远程服务器的文件copy到本地了:


scp -P52722 fangshixiang@10.102.131.178:/home/fangshixiang/nohup.out ./scp -P52722 fangshixiang@10.102.131.178:/home/fangshixiang/nohup.out ./

rsync


rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。


因为使用较少,具体参考:rsync(一):基本命令和用法


sudo和su


sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。


su : 切换到某某用户模式,提示输入密码时该密码为想要切换到的用户的密码,用法为su 账户名称。如果后面不加账户时系统默认为root账户,密码也为root的密码。没有时间限制。


备注:root切换到任何用户的时候,是不需要输入密码的


快捷命名:

sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。


Linux下为用户配置免密码sudo权限(只有root用户才能操作)

image.png


我们也可以指定的用户组,来sudo -i免密码:


image.png

1、root的密码除了root本人知道外,不需被其他需要用到root权限用户知道,因为使用sudo时,要求输入的密码是『该位用户自己的密码』。

2、把所有可执行sudo指令的用户都规范在『/etc/sudoers』这个文件中,root可以很容易地掌控整个系统。(一般每个用户一行记录,当然可以按组来)


普通用户使用sudo 来执行只有root才能执行权限的命令,跟用root用户执行是不一样的,因为这时候他用的还是普通用户的环境变量。用su -成root的用户还是有些环境变量是和root登陆是不一样的。另外,它们的uid也是不一样,只有euid是相同的。


sudo /bin/bash : 这个命令也会切换到root的bash下,但不能完全拥有root的所有环境变量,比如PATH,可以拥有root用户的权限。这个命令和 sudo -s 是等同的。

sudo su : 这个命令,也是登录到了root,但是并没有切换root的环境变量,比如PATH。


sudo su - : 这个命令,纯粹的切换到root环境下,可以这样理解,先是切换到了root身份,然后又以root身份执行了 su - ,这个时候跟使用root登录没有什么区别。这个结果貌似跟sudo -i 的效果是一样的,但是也有不同,sudo 只是临时拥有了root的权限,而su则是使用root账号登录了linux系统。


  • sudo su - 约等于 sudo -i
  • sudo -s 完全等于 sudo /bin/bash 约等于 sudo su
  • sudo 终究被一个"临时权限的帽子"扣住,不能等价于纯粹的登录到系统里


相比于su切换身份须要用户的password,常常性的是须要root的password,sudo仅仅是须要自己的password,就能够以其它用户的身份来运行命令。常常是以root的身份运行命令。所以sudo相对来说安全很多,毕竟root的密码可不是随便能让人知道的。


sudo的运行有这样一个流程:

1).当用户运行sudo时,系统于/etc/sudoers文件里查找该用户是否有运行sudo的权限;

2).若用户具有可运行sudo的权限。那么让用户输入用户自己的password,注意这里输入的是用户自己的password。

3).假设password正确。变開始进行sudo后面的命令,root运行sudo是不须要输入password的,切换到的身份与运行者身份同样的时候。也不须要输入password。

image.png


区别总结:


了解完su和sudo,是不是发现sudo有太多的优点了。su方式切换是须要输入目标用户的password。而sudo仅仅须要输入自己的password,所以sudo能够保护目标用户的password不外流的。当帮root管理系统的时候,su是直接将root全部权利交给用户。而sudo能够更好分工,仅仅要配置好/etc/sudoers,这样sudo能够保护系统更安全,并且分工明白,有条不紊。


关机重启相关命令:


reboot、shutdown、poweroff、halt、init、sync


reboot


ROOT权限用户下输入reboot命令就可以看到The system is going down for reboot NOW的提示,目前就重启VPS。


reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。


last reboot可以查看最近一次reboot的时间



shutdown


这个命令可以用来重启也可以用来关机操作。参数相对较多,本文只介绍常用的。


shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。


该命令的一般格式: shutdown [选项] [时间] [警告信息]


    k 并不真正关机而只是发出警告信息给所有用户


    r 关机后立即重新启动


    c 取消一个已经运行的shutdown(这个比较重要咯)


shutdown -h 2:30 ‘halt’:2点30分关机,注意以本机时间为准

shutdown –r +10:系统10分钟后关机并马上重新启动

shutdown –h now:系统马上关机(不重新启动)

shutdown -c :#取消之前的shutdown命令


该命令只能由超级用户使用


halt


是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。


halt 立刻关机


poweroff


poweroff 立刻关机


init


是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动


sync


一般在关机前可手动调用。表示:将数据同步写入到磁盘


在我们执行关机、重启命令时候一般都建议先执行此命令。


exit和logout


对于Linux中的命令而言,每当其执行完成后,都会返回一个整数,这个整数就是程序退出状态(exit status),可以在shell中使用echo $?来查看上一个命令的退出状态。退出状态为0表示程序执行成功,否则执行失败。(比如我们判断上一条命令执行成功了,才继续往下执行)


在shell脚本中,可以使用exit [n]来退出当前脚本,并且指定退出码为n。若没有指定退出码,则以脚本执行的最后一条命令的退出状态作为当前脚本的退出状态,即exit $?


在命令行中,可以使用exit来退出当前shell,或者使用logout命令。


注意:

1、退出当前shell并不是关机,只是关闭了与系统的交互接口,Linux仍然正常运行。

2、logout命令在运行级别为图形界面的时候,是无效的


创建目录 mkdir


在Linux系统中,mkdir命令用来创建一个目录或一个级联目录。


-m:为目录指定访问权限,与chmod类似。


-p:如果目录已经存在**,则不会有错误提示**。若父目录不存在,将会创建父目录。该选项常用于创建级联目录。


mkdir命令不加任何选项默认在当前目录下创建目录,目录的默认权限为777。如果目录已经存在将会提示错误


一次性创建多个目录

mkdir cep dod testlog


/

可以一次性创建多个文件夹


删除目录 rmdir


rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的。


注意,rm -r dir 命令可以代替rmdir,但是很危险,万一它突然就不是空的咧?


注意:删除某目录时必须具有对父目录的写权限。


-p 递归删除目录dirname, 当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。

-v --verbose  显示指令执行过程


改名了很少被使用了,一般使用更为强大的rm命令


创建文件 touch


touch 文件名


若该文件名文件已存在你,不加参数的情况下会什么都不做


拷贝 cp


这个是使用频率最多的命令,负责把一个源文件复制到目标文件(夹)下。


复制到文件夹下,则文件名保持不变,复制到文件中,则文件名变更。如果目标文件已经存在或目标文件夹中含有同名文件,则复制之后目标文件或目标文件夹中的同名文件会被覆盖。


cp 源文件1 源文件2 目标文件夹 或 cp 文件 目标文件夹*,这样可以一次性复制多个文件到目标文件夹里面


cp -r 源文件夹 目标文件夹。这个也是使用频率很高的命令,只需要记住复制文件夹一定要加“-r”参数,否则会出现“cp: omitting directory”错误。


cp -s 源文件 目标文件:也可以用ln命令实现同样的功能。当一个文件路径太深(如下述的a/b/c/d/e/orginalFile.txt),访问起来十分不方便时,就会创建这个文件的软链接,使之访问起来更方便些。软链接就相当于windows上的快捷方式。


cp -l 源文件 目标文件:也可以用ln命令实现同样的功能。有时候,为了某种原因,需要创建一个硬链接


软连接和硬链接的区别,这里不解释了。记得自己理解哦

删除文件(夹) rm

rm [选项]… 目录… 删除指定的<文件>(即解除链接)


-d --directory 删除可能仍有数据的目录 (只限超级用户)

-f --force 略过不存在的文件,不显示任何信息

-r/R --recursive 同时删除该目录下的所有目录层(一般删除文件夹带上)


rm *.rb:删除所有以.rb结尾的文件

移动文件 mv 重命名也用此命令


mv [选项] 源文件或目录 目标文件或目录


-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!


mv test.log test1.txt:相当于修改文件名


cat more less head tail


cat 是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;


cat file1 file2 > file 这是它的特殊能力 cat file1 file2 表示一次性显示两个文件的内容


cat -n a.txt:-n参数,会在输出前面加上行号 效果等同于 nl a.txt

more和less一般用于显示文件内容超过一屏的内容,并且提供翻页的功能。more比cat强大,提供分页显示的功能,

less比more更强大,提供翻页,跳转,查找等命令。而且more和less都支持:用空格显示下一页,按键b显示上一页。


more


+num 从第num行开始显示;


我们查看一个内容较大的文件时,要用到more的动作指令,比如ctrl+f(或空格键) 是向下显示一屏,ctrl+b是返回上一屏;


常用命令:

Enter 向下n行 一般慢慢滚动这样用

Ctrl+f / 空格键 向下滚动一屏

Ctrl+b 返回上一屏

:f 输出文件名和当前行的行号;


集合管道符使用

比如我们列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来,比如:


ls -l /etc |more

1

more默认会显示文件百分比。而less需要加参数-m / -M


less


less几乎可以完全代替more命令,并且功能更加强大。


-M 显法读取文件的百分比、行号及总行数;

-p pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile


less中的命令


Enter 向下移动一行;

y 向上移动一行;

空格键 / b 向下滚动一屏;

b 向上滚动一屏;

w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;

g 跳到第一行;

G 跳到最后一行;

/pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;

v 调用vi编辑器;

q 退出less


head


head 是显示一个文件的内容的前多少行; 用法比较简单


head -n 行数值 文件名;

比如我们显示/etc/profile的前10行内容,应该是:


head -n 10 /etc/profile


tail(非常有用)


tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。


tail -n 行数值 文件名;


比如我们显示/etc/profile的最后5行内容,应该是:


tail -n 5 /etc/profile


备注:最后一条命令tail非常有用,尤其在监控日志文件时,可以在屏幕上一直显示新增的日志信息。


-f 该参数用于监视File文件增长。(监控日志需要加上此参数) 默认显示10行

-n Number:从 Number 行位置读取指定文件。(使用较多)

tail -f -n100 README

二进制显示文件 od


od 文件名,就会以二进制显示内容。全是0和1 使用较少


>和>>指令


重定向命令其实用得不少


> 是重定向到一个文件(会覆盖原有的内容),>>是追加内容到文件。两个命令都是如果文件不存在则创建文件。

image.png



相关文章
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
21 3
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
4天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
19 3
|
7天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
32 6
|
8天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
21 7
|
8天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
21 4
|
7天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
11 2
|
11天前
|
缓存 监控 Linux
|
15天前
|
Linux Shell 数据安全/隐私保护
|
16天前
|
域名解析 网络协议 安全