当前位置: 首页 > news >正文

【Linux系统】Ubuntu的简单操作

什么是 Ubuntu?

Ubuntu(乌帮图)是一个非洲词汇,它的意思是“人性对待他人”或“群在故我在”。Ubuntu发行版将Ubuntu精神带到软件世界之中。
目前已有大量各种各样基于GNU/Linux的操作系统,例如:Debian,SuSE,Gentoo,RedHat和Mandriva,当然还有Ubuntu。Debian是一个广受称道、技术先进且有着良好支持的发行版,Ubuntu正是基于Debian之上,旨在创建一个可以为桌面和服务器提供一个最新且一贯的Linux系统。
Ubuntu项目完全遵从开源软件开发原则,并鼓励人们使用、完善和传播开源软件。也就是说Ubuntu目前是并将永远是免费的。

GNU/Linux系统简介
  • 桌面系统Gnome

    • 成熟的linux桌面系统有Gnome和KDE,其中Gnome用C编写,而KDE则是用C++编写的。
  • 终端与shell

    • 打开一个终端,即运行一个shell程序。shell是一个命令行解释器,它使得用户能够与操作系统进行交互。
  • APT软件包管理

    • 常用命令集有: apt-get ,apt-cache等。
  • Linux分区与目录结构

    • Linux中分区从属于目录,Windows中目录从属于分区。

    请添加图片描述
    常用目录

     / 根目录/root  root  用户目录/home/username  普通用户目录/etc  配置文件目录/bin  命令目录/sbin  管理命令目录/usr/bin | /usr/sbin  系统预装的其他命令
    

Linux系统的框架(简易版本):(绘画能力有限,见谅!)
Linux系统的框架(简易版本)
shell是一个命令解释器,它可以用来启动、挂起、停止甚至编写程序。shell是Linux操作系统的一个整体组成部分,也是Linux操作系统和UNIX设计的一部分。

shell命令提示符
  • Shel提示符标识了命令行的开始,通常Shell命令提示符采用以下的格式:
    • username@hostname:pathname$
    • 其中:
      • username ——> 当前登陆的用户名
      • @ ——> 用户名与主机名的分隔符
      • hostname ——> 当前登陆的主机名
      • : ——> 主机名与路径名的分隔符
      • pathname ——> 当前路径名
      • $ ——> 普通用户命令开始提示符(超级用户是#)
shell命令格式
  • $command [-options argument1 argument2 ——> 命令名 [选项] <参数1> <参数2>…
  • 其中:
    • command ——> 命令名称
    • options ——> 选项(一般由连字符-引导) : [选项]是对命令的特别定义,以减号(-)开始,多个选项可以用一个减号(-)连起来,例如:ls -l -h 与 ls -lh 相同。
    • argument ——> 参数:<参数>提供命令运行的信息,或者是命令执行过程中所使用的文件名。
      • 命令的三要素之间要用空格隔开。
      • 一条命令要书写多行,用反斜杠 \ 表明未结束。
      • 多条命令同时写在一行,用分号 ; 隔开。
      • Shell命令是Linux和Unix系统中的基础,用于完成各种操作,如文件管理、程序执行、文本处理等。

shell的种类 :sh、bash、csh、tcsh、ash 等。

(1).sh shell

全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

(2). csh shell

sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。

(3). tcsh shell

是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

(4). ash shell

一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

(5). bash shell

bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

shell常用命令

工具命令

	man 是 manual 的缩写man 帮助用法演示man lsman 也是一条命令,共分为9章,可以使用man命令获得man的帮助man 7 man要想掌握一个函数:你必须了解它的原型:通过man手册获取printf的原型man 3 printf helpshell(命令解释器)自带的命令成为内部命令,其他的是外部命令内部命令使用 help 帮助help cd外部命令使用help帮助ls --helptouch --help //可以来查看touch指令的用法可以通过type来判断一个命令是内部还是外部命令type lstype cdhistory 显示历史命令history [选项]echo 显示文本或变量的内容 --> echo [选项] [字符串/变量]echo “Hello World”echo $PATHdate 显示系统日期和时间date [选项]

文件管理
显示当前的目录:

	pwd 显示当前的目录名称

查看文件:

	ls 查看当前目录下的文件ls /  /root    这样会同时查看根目录和 /root目录下的文件
常用参数-l 长格式显示文件-a 显示隐藏文件-r 逆序显示(默认按照文件名排序)-t 按照时间顺序显示   ls -l -r -t (会按照时间逆向排序) ls -lrt-R 递归显示    -h 人性化显示、    -d 只显示目录

更改当前的操作目录:

	cd 更改当前的操作目录:cd /path/to/... 绝对路径:相对于根目录来说的,从根目录出发cd ./path/to/... 相对路径: 相对于当前路径,从当前路径出发cd ../path/to/... 相对路径cd 目录	//切换路径cd 	//切换回自己的工作目录cd ..		//切换到上一级cd -		//切换到上一次

目录文件的创建与删除:

	mkdir  建立空目录mkdir a常用参数-p  递归创建多级文件夹rmdir 删除空文件夹rmdir arm 可以删除非空目录及文件常用参数-r 删除目录-f 强制删除,不提示需要注意,rm -rf 后面可以跟多个目录不要出现 rm -rf / usr 这种,会从根目录开始删除

复制和移动目录:

	cp 复制文件和目录cp /root/a /tmp常用参数-r/R 递归复制目录-v 显示过程-p 保留文件原有更新时间(属性)-a 时间戳+所有权+复制连接文件属性而非档案本身    -f 强行覆盖    -i 覆盖之前先行提示mv 移动文件或者重命名mv /a /othermv /a /tmpmv /a /tmp/b(移动+重命名)常用参数-i 覆盖文件前提示

生成文件:

	touch (1)是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;(2)是用来创建新的空文件。touch(空格)文件名	——> 示例: touch hello.c     ---->在当前位置下创建一个文件,名为:hello.c touch file{1..10}	//创建file1—file10共10个文件touch -t 201810121230 hh.sh 【-t用十进制数】	//设定文件的时间戳touch -r hh hh.sh    【touch -r目标文件  源文件】	 //更新log.log的时间和log2012.log时间戳相同常用参数-a 仅更改访问时间-c, --no-create 不创建任何文件-d, --date=STRING 解析 STRING 并使用它来代替当前时间-f (忽略)-h, --no-dereference 影响每个符号链接而不是任何引用的文件(仅在可以更改符号链接的时间戳的系统上有用)-m 仅更改修改时间 -r, --reference=FILE 使用此文件的时间而不是当前时间-t STAMP 使用 [[CC]YY]MMDDhhmm[.ss] 代替当前时间 --time=WORD 更改指定时间:WORD 为 access、atime 或 use:等同于 -a      WORD 为 modified 或 mtime:等同于 -m --help     显示此帮助并退出     --version  输出版本信息并退出

通配符
常用通配符:

	* 匹配任何字符串? 匹配1个字符串[xyz] 匹配xyz任意一个字符[a-z] 匹配一个范围[!xyz]或者[^xyz] 不匹配

文本内容查看

	cat 文本内容显示到终端显示全部head 查看文件开头head test.txt  默认查看前10行head -5 test.txt head -c 20 runoob_notes.log  显示文件前 20 个字节tail 查看文件结尾tail -1000f catalina.out常用参数 -f 文件内容更新后,显示信息同步更新grep 根据模式匹配搜索文件内容 --> grep [选项] 模式 [文件]grep “hello” myfile.txtfind 根据指定条件搜索文件 --> find [路径] [选项] -name 模式find /home -name “*.txt”sort 对文本文件进行排序 --> sort [选项] [文件]sort myfile.txtwc 统计文件内容信息    wc -l /tmp/test.txt    查看文件有多少行-c或--bytes或——chars:只显示Bytes数;-l或——lines:只显示列数;-w或——words:只显示字数。more 逐页显示文件内容 分行显示more myfile.txtless 逐行显示文件内容,支持向上翻页less myfile.txt

打包和压缩
最早的Linux备份介质是磁带,使用的命令是tar。可以打包后的磁带文件进行压缩储存,压缩的命令是 gzip 和 bzip2,经常使用的扩展名是 .tar.gz .tar.bz2 .tgz。

	tar 打包命令常用参数c 打包x 解包f 指定操作类型为文件       v 显示进度    P 使用绝对路径打包tar cf /tmp/etc-backup.tar /etc      把  /etc 这个文件夹打包放在/tmp/etc-backup.tar会提示,但是也能成功:tar: Removing leading `/' from member namestar cPf /tmp/etc-backup.tar /etc      使用绝对路径 (没有提示)tar czf /tmp/etc-backup.tar.gz /etc  (tar集成了gzip和bzip2)tar cjf /tmp/etc-backup.tar.bz2 /etc  (压缩比例更高)解包tar xf /tmp/etc-backup.tar -C /root  把 tar包解压到 /root 目录下tar zxf /tmp/etc-backup.tar.gz -C /etctar zjf /tmp/etc-backup.tar.gz -C /etcgzip 压缩文件 --> gzip [选项] 文件 --> 由于tar集成了gzip和bzip2,所以通常情况下直接使用tar即可gzip myfile.txtgunzip myfile.txt.gzzip 压缩文件 --> zip [选项] 文件/目录zip myfile.zip myfile.txtunzip myfile.zip

用户与权限管理

	useradd 新建用户useradd user1 (可以用 id user1 来验证是否存在)创建一个用户后,自动在 /home建立Home目录,并且创建一些隐藏文件。同时,在 /etc/passwd 这个文件里会加入新用户user1的数据,/etc/shadow里面也有会相关数据(密码相关)。如果没有组的话,创建一个同名的组。userdel 删除用户userdel user1userdel -r user1 同时删除Home目录passwd 修改用户密码passwd user1passwd 更改当前用户密码/etc/passwd 和 /etc/shadow 里面的数据也被删除usermod 修改一个用户账户usermod -d /home/other user1  Home目录从 /home/user1 改成 /home/otherchage 修改用户生命周期    设置用户密码的过期时间,甚至用户本身的过期时间

组管理命令

	groupadd 新建用户组groupadd group1useradd user1usermod -g group1 user1 把user1这个用户的组改成group1useradd -g group1 user2 新建用户user2时就把它放到group1组下groupdel 删除用户组    groupdel group1 删除组group1

用户切换

	su 切换用户su - USERNAME 使用 login shell 方式切换用户su USERNAME 不完全切换,比如还是在 /root下而不会自动跳转到用户家目录sudo 以其他用户身份执行命令visudo 设置需要使用sudo的用户(组)

用户和用户组的配置文件介绍

	/etc/passwd 用户配置文件,7个字段user3:x:1003:1003::/home/user3:bin/bashuser3:用户名称x:是否需要密码验证,x表示需要,空表示不需要1003:用户的uid,用户的id信息,唯一识别用户的标识。root是0。1003:用户的gid,表示组id信息第五个字段:注释/home/user3:Home目录/bin/bash:用户登录后的命令解释器。/sbin/nologin 表示不能登录/etc/shadow 保存用户和用户密码相关信息的第一个字段:用户名称第二个字段:用户加密过后的密码(看到也没用,经过处理,即使相同的密码也会显示不同)/etc/group 用户组相关的配置文件,4个字段group:x:10:anothergroup:组的名称x:是否需要密码验证10:gidanother:其他组设置,说明another这个用户的第二个组是group比如输入 id user1uid=1001(user1) gid=1001(group1) 组=1001(group1)id anotheruid=1002(another) gid=1002(another) 组=1003(group)  查找another信息,发现他的第二个组是group

文件和目录的权限表示方法

	文件类型-    普通文件d   目录文件b   块特殊文件c   字符特殊文件l    符号链接f    命名管道s    套接字文件文件权限的表示方法字符权限表示方法r    读w    写x    执行数字权限的表示方法r=4w=2x=1文件权限的表示方法rwxrwxrwx第一个表示文件属主的权限,第二个表示文件属组的权限,第三个表示其他用户的权限创建新文件有默认权限,根据umask值计算,属主和属组根据当前进程的用户来设定目录权限的标识方法x    进入目录rx   显示目录内的文件名wx   修改目录内的文件名

文件权限的修改方法和数字表示方法

	修改权限命令(测试的时候别用root,root不受限制)chmod    修改文件、目录权限chmod u+x /tmp/testfile    u表示属主chmod u=rwx /tmp/testfile  chmod g-r  /tmp/testfile   g表示属组chmod 0-r /tmp/testfile    o表示其他用户chmod a+r /tmp/testfile    a表示所有chmod 755 /tmp/testfile	   如果属主没有权限,所属的组有权限,以属主为准,还是没有权限。chown    更改属主、属组chown user1 /test   把test这个目录的属主改成user1chown :group /test   把test这个目录的属组给成group    chown user1:group /test   一起修改chgrp    可以单独更改属组、不常用linux一般创建一个文件默认会赋予666权限,然后根据用的umask值来计算。用户默认umask值为022,所以一般是 666-022=644,对应rw-r--r--

特殊权限

	SUID  用于二进制可执行文件,执行命令时取得文件属主权限如,/usr/bin/passwdSGID  用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组文件共享时使用SBIT  用于目录,该目录下新建的文件和目录,仅root和自己可以删除如 /tmp

网络管理

网络状态查看

	net-tools VS iproute1. net-toolsifconfigroutenetstat2. iproute2ipss

网卡名称:

   ifconfig查看网卡名称· eth0 第一块网卡(网络接口)· 你的第一个网络接口可能叫做下面的名字· eno1 板载网卡· ens33 PCI-E网卡· enp0s3 无法获取物理信息的 PCI-E 网卡· CentOS7使用了一致性网络设备命名,以上都不匹配则使用eth0当工作中大量管理网卡,所有设备的网卡最好都是以 eth0 命名,这样可以批量操作。网络接口命名修改网卡命名规则受 biosdevname 和 net.ifnames 两个参数影响编辑 /etc/default/grup 文件,增加 biosdevname=0 net.ifnames=0更新 grub# grub2-mkconfig -o /boot/grub2/grub.cfg重启# reboot组合,biosdevname=0 net.ifnames=0,则网卡名为 eth0biosdevname=1 net.ifnames=0,则网卡名为 em1biosdevname=0 net.ifnames=1,则网卡名为 ens33

ifconfig:

	普通用户要使用ifconfig,要使用 /sbin/ifconfig如果只想要看某一张网卡,可以 ifconfig 网卡名mii-tool eth0  查看网卡物理连接情况route -n 查看网关(路由),使用 -n 参数不解析主机名(把ip解析成域名)

网络配置命令:

	ifconfig <接口> <IP地址> [netmask 子网掩码]      设置网卡的ip地址ifup   <接口>    启用网卡ifdown <接口>    禁用网卡

网关配置命令:

	添加网关route add default gw <网关ip>route add -host <指定ip> gw <网关ip>route add -net <指定网段> netmask <子网掩码> gw <网关ip>

网络故障排除

	ping 检测是否连接到主机ping www.baidu.com traceroute  跟踪当前主机到目标主机的网络状态,-w 1超时最多等1秒traceroute -w 1 www.baidu.commtr  显示自己主机的网络状态nslookup  域名解析成ipnslooup www.baidu.comtelnet  检测端口telnet www.baidu.com 80tcdump  网络抓包   -i any 抓取所有网卡里的数据包,-n 把域名解析成 ip ,port 80 抓取指定端口  host 10.0.0.1 抓取当前主机到某个主机的数据包tcpdump -i any -n port 80tcpdump -i any -n host 10.0.0.1tcpdump -i any -n host 10.0.0.1 and port 80tcpdump -i any -n host 10.0.0.1 and port 80 -w /tmp/filename 捕获并且保存netstat 监听地址 -n 域名转换,-t 显示tcp ,-p 进程 ,-l tcp状态 listennetstat -ntplss 跟netstat一样,参数也一样,显示的格式不一样网络服务管理程序分为两种,分别是 SysV 和 systemd(centos7)service network status|start|stop|restart网络配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 (网卡配置项)/etc/hosts

软件包管理

rpm

	rpm 命令常用参数-q 查询软件包    rpm -qa 查询所有软件包    rpm -q vim-common 查询某个软件包-i  安装软件包    rpm -i vim-enhanced-7.4.160-5.el7.x84_64.rpm  (要全称)-e 卸载软件包    rpm -e vim-enhanced   (只要名字,不需要版本号等)用 rpm 安装的问题:如果一个软件包依赖其他软件包,那么就会安装失败。需要操作者自己解决依赖关系。

yum

	CentOS yum源http://mirror.centos.org/centos/7/国内镜像https://opsx.alibaba.com/mirroryum 配置文件/etc/yum.repos.d/CentOS-Base.repo可以修改配置文件[base]name=CentOS-$releasever - Base -mirrors.aliyun.comfailovermethod=prioritybaseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7或者直接用别人已经写好的配置文件wget -O /etc/yum.repo.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo需要清除缓存yum makecache常用选项install 安装软件包remove 卸载软件包list |grouplist 查看软件包update 升级软件包

其他安装方式

	二进制安装源代码编译安装wget https://openresty.org/download/openresty-1.15.8.1.tar.gztar zxf openresty-VERSION.tar.gzcd openresty-VERSION/./configure --prefix=/usr/local/openrestymake -j2   (用2核编译)make isntall

升级内核

	rpm 格式内核查看内核版本uname -r升级内核版本yum install kernel-3.10.0   这种方式一般不能升级到最新epel软件仓库会有较高的软件版本。yum install epel-release -y升级已安装的其他软件包和补丁yum update    除了升级内核,还会升级软件包。正常不要使用。源代码编译安装内核yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel下载并解压缩内核https://www.kernel.orgtar xvf linux-5.1.10.tar.xz -C /usr/src/kernels配置内核编译参数cd /usr/src/kernels/linux-5.1.10/make menuconfig | allyesconfig | allnoconfigmake allyesconfig (无脑全选)使用当前系统内核配置cp /boot/config-kernelversion.platform /usr/src/kernels/linux-5.1.10/.config查看cpulscpu编译make j2 all安装内核make modules_installmake install

进程管理

进程的概念和查看进程

	进程-运行中的程序,从程序开始运行到终止的整个生命周期是可管理的查看命令ps-e 表示所有的终端运行的进程-f  显示更多信息,比如 UID、PPID(父进程)、CMD(命令的完整路径)-L  多显示 LWP ,线程信息ps -eLf  常用命令pstree  查看进程树top  动态查看进程信息top -p 进程号shutdown 关机或重启系统 --> shutdown [选项] 时间shutdown -h now结论:进程也是树形结构进程和权限有着密不可分的关系

进程的优先级调整

	调整优先级nice 范围从 -20 到 19,值越小优先级越高,抢占资源就越多nice -n 10 ./rest.sh  启动的时候调整为 10renice 重新设置优先级renice -n 15 19312  已经处于启动的情况下进行调整。根据进程号进程的作业控制&符号,后台运行./test.sh &jobs 把处于后台运行的程序调到前台显示jobs 能得到一个编号fg 编号,可以调到前台ctrl +z,把已经处于前台的程序调到后台,状态会stop

信号量
信号量是进程间通信方式之一,典型用法是:终端用户输入中断命令,通过信号机制停止一个程序的运行。

	使用信号的常用快捷键和命令kill -l 查看所有的信号SIGINT 通知前台进程组终止进程 ctrl + c,2号信号SIGKILL 立即结束程序,不能被阻塞和处理 kill -9 pid ,9号信号 

守护进程和系统日志

	守护进程(精灵进程)使用 nohup 与 & 符号配合运行一个命令 (nohup进程不是守护进程)nohup 命令使进程忽略 hangup(挂起)信号。关掉终端这个进程依然可以运行,忽略输入并且把输出打印到 nohup.out守护进程(daemon)和一般进程有什么差别呢?开机自启,守护进程不需要终端,输出可以打印到特殊的文件中,进程所占用的目录是根目录。cd /proc/ 这个目录是内存信息,相应的进程会有进程号同名的目录。使用 screen 命令,进入screen环境后,如果远程连接断掉了,可以通过screen恢复工作现场screen 进入 screen 环境ctrl +a然后再单独按d退出(detached)screen 环境screen -ls 查看 screen 的会话screen -r sessionid 恢复会话系统日志文件 /var/log系统常规日志:messages内核运行情况:dmesg安全日志  secure定时任务日志 cron

内存和磁盘管理

内存和磁盘使用率查看

	内存使用率查看free-m  以兆的方式显示-g   以G的方式显示,但是会被四舍五入。一般不用top磁盘使用率的查看fdisk-l 查看磁盘分区一块硬盘最多分15个分区df 既能够看到分区,又能够看到挂载到的目录-h 人性化可读du (实际占用的空间)-h 人性化显示-s  只显示总计du与ls的区别du 是实际占用的,ls算上空洞数据。

常见文件系统
Linux 支持多种文件系统,常见的有:

	ext4(centos6)xfs(centos7)NTFS(需安装额外软件,window常用,有版权)

磁盘分区和挂载

	常用命令fdiskmkfspartedmount常见配置文件/etc/fstab用fdisk创建分区(一个硬盘设备可以创建多个分区,也可以创建一个)1:fdisk -l 查看有几个硬盘设备及分区2:fdisk /dev/sdc    (比如有设备sdc,则可以针对sdc进行分区)3:之后 m 键是帮助4:n 表示新建一个分区5:新建分区时,需要选择主分区和扩展分区,其中 p表示主分区,最多有4个。e表示扩展分区(里面可以建立逻辑分区)。一般把一块硬盘划分为一个主分区。使用扩展分区时,只能建立3个主分区。6:选择区分编号1-47:指定分区扇区大小,默认20488:指定分区大小。默认全部。可以 + 20G等可以选择分区大小9:q 表示退出,分区不生效。w 表示生效建立完分区后,需要对分区进行格式化。mkfs.ext4  mkfs.xfs等命令mkfs.ext4 /dev/sdc1然后要进行操作,linux里都是文件级别的操作,需要挂载到某个目录下mkdir /mnt/sdc1mount /dev/sdc1 /mnt/sdc1 挂载上去对/mnt/sdc1的读写就会落入sdc1设备上1、一个硬盘2、进行分区3、格式化4、挂载5、对指定目录进行操作需要注意的事情:如果一个硬盘大于 2T ,不能使用 fdisk 进行分区,需要使用 partedparted /dev/sddhelp 获取帮助mount 进行挂载是临时的,不是固化的vim /etc/fstab在文件中新增下面一句话/dev/sdc1 /mnt/sdc1 ext4 defaults(表示权限)0 0

系统综合状态查询

	使用 sar 命令查看系统综合状态sar -u 1 10 CPU的查看,每隔1秒做采样,采样10次,sar -r 1 10 看内存sar -b 1 10 IO的情况(磁盘读写)sar -d 1 10 查看每块磁盘的读写sar -q 1 10 查看进程使用第三方命令查看网络流量yum install epel-releaseyum install iftop (网络情况)iftop -p (默认eth0)

将文件连接并传输到远程系统
scp
scp 命令用于Linux之间复制文件和目录,scp是 secure copy 的缩写。scp 是linux系统下基于ssh登录进行安全的远程文件拷贝命令。scp是加密的,rcp是不加密的,scp是rcp的加强版。

	scp [可选参数]  file_source file_targetscp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file][-l limit] [-o ssh_option] [-P port] [-S program][[user@]host1:]file1 ... [[user@]host2:]file2参数说明:-1: 强制scp命令使用协议ssh1-2: 强制scp命令使用协议ssh2-4: 强制scp命令只使用IPv4寻址-6: 强制scp命令只使用IPv6寻址-B: 使用批处理模式(传输过程中不询问传输口令或短语)-C: 允许压缩 (将-C标志传递给ssh,从而打开压缩功能)-p: 保留源文件的修改时间,访问时间和访问权限-q: 不显示传输进度条-r: 递归复制整个目录-v: 详细方式显示输出。scp和ssh(1)会显示出整个过程的调式信息。这些信息用于调试连接,验证和配置问题-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh-l limit: 限定用户所能使用的带宽,以Kbit/s为单位-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式-P port: 注意是大写的P, port是指定数据传输用到的端口号-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项从本地复制文件到远程scp local_file remote_username@remote_ip:remote_folder  // 从本地复制文件到远程scp local_file remote_ip:remote_folder  // 省略了用户名,默认为root,等同于 scp local_file root@remote_ip:remote_folder从远程复制到本地从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可:scp remote_username@remote_ip:remote_folder local_file

ssh
SSH 为Secure Shell 的缩写,SSH为创建在应用层和传输层基础上的安全协议。通过SSH协议远程登录其他主机。

	SSH(远程连接工具[客户端命令])连接原理:ssh服务是一个守护进程(daemon),系统后台监听客户端 /usr/bin/ssh 的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(默认监听在22端口),包括公共密钥等交换信息。ssh服务端由2部分组陈: openssh(提供ssh服务) openssl(提供加密的程序)备注:ssh的客户端图形化工具有: xshell、securecrt、Mobaxterm等传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。ssh: /usr/bin/ssh /etc/ssh /usr/share/man/man1/ssh.1.gzssh username@remote_ip

sshpass
sshpass 实用程序旨在使用键盘交互密码身份验证模式运行SSH ,但以非交互方式运行。
SSH使用直接TTY访问来确保密码确实是由交互式键盘用户发出的。sshpass 在专用的TTY中运行SSH,让SSH认为它是从交互式用户那里获取密码的。

	安装 sshpass:yum install sshpass -ysshpass [-f filename | -d num | -p password | -e] [options]-p 密码 密码在命令行中给出。 (这是最不安全的选择,不应使用)用于sshpass通过SSH登录到远程服务器。假设密码为 abc。以下是使用sshpass选项的几种方法。sshpass -p "abc" ssh <username>@<服务器地址>-p在shell脚本中使用时,该选项如下所示:sshpass -p "abc" ssh -o StrictHostKeyChecking=no <username>@<服务器地址>-f 文件名 密码是文件名的第一行。 echo'abc' > pass_filechmod 0400 pass_filesshpass -f pass_file ssh <username>@<服务器地址>在shell脚本中使用以下选项:sshpass -f pass_file ssh -o StrictHostKeyChecking=no <username>@<服务器地址>-d number number是sshpass从运行程序继承的文件描述符。从打开的文件描述符中读取密码。 -e 密码来自环境变量"SSHPASS"。(密码应该是文件名的第一行)SSHPASS='abc' sshpass -e ssh <username>@<服务器地址>在shell脚本中使用时,该选项如下所示:SSHPASS ='abc' sshpass -e ssh -o StrictHostKeyChecking=no <username>@<服务器地址>sshpass搭配使用rsync:下面使用了 -e 选项,该选项将密码传递给环境变量SSHPASSSSHPASS='abc' rsync --rsh="sshpass -e ssh -l <username>" /环境变量地址/地址可以 -f 像这样使用开关:rsync --rsh="sshpass -f pass_file ssh -l <username>" /环境变量地址/地址可以使用 sshpassGPG 加密的文件。使用该-f开关时,参考文件为纯文本格式。echo 'abc' // 创建文件.sshpasswdgpg -c .sshpasswd // 使用gpg加密文件rm .sshpasswd // 删除包含明文的文件gpg -d -q .sshpassword.gpg // 使用pass_file; sshpass -f pass_file ssh <username>@<服务器地址>

写代码中需要注意的点:

	shell 指令在linux中严格区分大小写, l  L 不同使用分号( ; ) 可以在一行中输入多个命令ls;lld ; echo “helloworld” ; lok按下Table键,自动补齐命令、目录或文件名系统会将过去输入过的命令记忆下来,只要按方向键中的上下箭头输入输出重定向:输入定向: 输出定向: >, >>如下图所示:

请添加图片描述
请添加图片描述

	管道:可以将多个命令组合到一起,把管道左边的命令的输出 作为右边命令的输入

请添加图片描述

这只是一些常用的Linux Shell命令的介绍和用法,还有很多其他命令可以去进一步了解和使用。使用这些命令可以帮助您更好地管理和操作Linux系统。

以上。仅供学习与分享交流,请勿用于商业用途!

我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!


http://www.mrgr.cn/news/57020.html

相关文章:

  • APP竞价期间遭遇黑客攻击的应对策略与损失挽回
  • springboot2.6.15升级至3.3.4,Spring Framework升级至6.1.14
  • 2024第一次随堂测验参考答案
  • Metasploit渗透测试之模块学习与开发
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
  • SLAM评估工具evo学习
  • 探秘 ArrayList:源码剖析与扩容策略
  • 虚拟内存与物理内存:计算机存储系统的核心要素
  • ETLCloud搭配MySQL | 让关系型数据库更智能
  • 中国云厂出海:如何绕过暗礁,找到宝藏?
  • vue3.0 + vite打包完成后,将dist下的资源包打包成zip
  • 用哪种建站程序做谷歌SEO更容易?
  • DAG和Steps
  • C++ 红黑树
  • 接口测试 —— Postman 变量了解一下!
  • 提高爬虫性能的 5 个关键技巧:从并发到异步执行
  • 【Linux】僵尸进程和孤儿进程
  • 【算法笔记】前缀和算法原理深度剖析(超全详细版)
  • 使用 Cursor 和 Devbox 快速开发并上线 Gin 项目
  • Java 使用 itextpdf 自定义 生成 pdf
  • javascript实现aes算法
  • Ping32:企业级防泄密能力的强大守护者
  • Windows API --- Unicode简介 2.1
  • python--pyQt 单选按钮控件 -QRadioButton
  • Java面试题库——网络编程
  • 洛谷 P3130 [USACO15DEC] Counting Haybale P