【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系统的框架(简易版本):(绘画能力有限,见谅!)
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系统。
以上。仅供学习与分享交流,请勿用于商业用途!
我是一个十分热爱技术的程序员,希望这篇文章能够对您有帮助,也希望认识更多热爱程序开发的小伙伴。
感谢!
相关文章:
【Linux系统】Ubuntu的简单操作
什么是 Ubuntu? Ubuntu(乌帮图)是一个非洲词汇,它的意思是“人性对待他人”或“群在故我在”。Ubuntu发行版将Ubuntu精神带到软件世界之中。 目前已有大量各种各样基于GNU/Linux的操作系统,例如:Debian,SuSE,Gentoo,R…...
标准日志插件项目【C/C++】
博客主页:花果山~程序猿-CSDN博客 文章分栏:项目日记_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,项目介…...
SpingBoot原理
SpingBoot原理 在前面十多天的课程当中,我们学习的都是web开发的技术使用,都是面向应用层面的,我们学会了怎 么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇,主要偏向于底 层原理。 我们今天的课程…...
Cout输出应用举例
Cout输出应用 在main.cpp里输入程序如下: #include <iostream> //使能cin(),cout(); #include <stdlib.h> //使能exit(); #include <sstream> #include <iomanip> //使能setbase(),setfill(),setw(),setprecision(),setiosflags()和res…...
java的无锁编程和锁机制
Java 的并发编程中,为了保证线程安全和高性能,采用了两种主要的同步手段:锁机制和无锁编程。以下是对锁机制、无锁编程、死锁及其避免的详细讲解。 一、无锁编程 无锁编程通过原子操作来避免传统锁,从而减少线程的上下文切换&am…...
vue实现富文本编辑器上传(粘贴)图片 + 文字
vue实现富文本编辑器上传(粘贴)图片 文字 1.安装插件 npm install vue-quill-editor -s2.在使用vue-quill-editor富文本的时候,对于图片的处理经常是将图片转换成base64,再上传数据库,但是base64不好存储。 原理&a…...
子集和全排列(深度优先遍历)问题
欢迎访问杀马特主页:小小杀马特主页呀! 目录 前言: 例题一全排列: 1.题目介绍: 2.思路汇总: 3.代码解答: 例题二子集: 题目叙述: 解法一: 1.思路汇总…...
判断检测框是否在感兴趣区域(ROI)内
判断检测框是否在感兴趣区域(ROI)内 在计算机视觉和图像处理中,我们经常需要确定一个矩形检测框是否位于一个特定的感兴趣区域(Region of Interest, ROI)内。这个ROI可以是一个多边形,而检测框则是一个矩形…...
正点原子阿尔法ARM开发板-IMX6ULL(九)——关于SecureCRT连接板子上的ubuntu
文章目录 一、拨码器二、SecureCRT 一、拨码器 emmm,也是好久没学IMX6ULL了,也是忘了拨码器决定了主板的启动方式 一种是直接从TF卡中读取文件(注意这里是通过imdownload软件编译好了之后,通过指令放入TF卡) 一种是现在这种用串口…...
微信支付Java+uniapp微信小程序
JS: request.post(/vip/pay, {//这是自己写的java支付接口id: this.vipInfo.id,payWay: wechat-mini}).then((res) > {let success (res2) > {//前端的支付成功回调函数this.$refs.popup.close();// 支付成功刷新当前页面setTimeout(() > {this.doGetVipI…...
【NOIP提高组】加分二叉树
【NOIP提高组】加分二叉树 💐The Begin💐点点关注,收藏不迷路💐 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整…...
HarmonyOS 相对布局(RelativeContainer)
1. HarmonyOS 相对布局(RelativeContainer) 文档中心:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-layout-development-relative-layout-V5 RelativeContainer为采用相对布局的容器,支持容器内部的子元素设…...
webpack5搭建react脚手架详细步骤
1. 初始化项目 首先,创建一个新目录并初始化项目: bash mkdir create-react cd create-react pnpm init --y git init 这里使用pnpm作为包管理工具,因为它在处理依赖和速度上表现更好。 2. 安装React和TypeScript 安装React和React-DOM…...
速盾:高防cdn怎么拦截恶意ip?
高防CDN(Content Delivery Network)是一种用于防御网络攻击和提供高可用性的服务。它通过分发网络流量,将用户的请求导向最近的服务器,从而提高网站的加载速度和稳定性。然而,不可避免地,有些恶意IP地址会试…...
太阳能面板分割系统:训练自动化
太阳能面板分割系统源码&数据集分享 [yolov8-seg-EfficientHead&yolov8-seg-vanillanet等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Globa…...
C++笔记---位图
1. 位图的概念 位图(Bitmap)是一种基于位操作的数据结构,用于表示一组元素的集合信息。它通常是一个仅包含0和1的数组,每个元素对应一个二进制位,若该元素存在,则对应的位为1;若不存在ÿ…...
ABC370
## A - Raise Both Hands (模拟) 题意:输入l,r,如果l1r0输出yes,l0r1输出no,否则输出Invalid 代码: #include<bits/stdc.h> using namespace std; typedef long long ll; vo…...
C语言[求x的y次方]
C语言——求x的y次方 这段 C 代码的目的是从用户输入获取两个整数 x 和 y ,然后计算 x 的 y 次幂(不过这里有个小错误,实际计算的是 x 的 (y - 1) 次幂,后面会详细说),最后输出结果。 代码如下: #include…...
JavaScript part2
一.前言 前面我们讲了一下js的基础语法,但是这些还是远远不够的,我们要想操作标签,实现一个动态且好看的页面,就得学会BOM和DOM,这些都是浏览器和页面的,这样我们才能实现一个好看的页面 二.BOM对象 BOM…...
HarmonyOS开发 - 本地持久化之实现LocalStorage实例
用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 说明&#x…...
【C++打怪之路Lv12】-- 模板进阶
#1024程序员节|征文# 🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您…...
第23周Java主流框架入门-SpringMVC 2.RESTful开发风格
课程笔记:RESTful 开发风格 课程介绍 本节课程介绍 RESTful 开发风格,以及如何在 Spring MVC 中应用这种开发模式。传统 MVC 开发通过 Servlet、JSP 和 Java Bean 实现前后端交互,而 RESTful 开发提供了一种新的理念,更适合现代…...
QT枚举类型转字符串和使用QDebug<<重载输出私有枚举类型
一 将QT自带的枚举类型转换为QString 需要的头文件: #include <QMetaObject> #include <QMetaEnum> 测试代码 const QMetaObject *metaObject &QImage::staticMetaObject;QMetaEnum metaEnum metaObject->enumerator(metaObject->indexOf…...
手机柔性屏全贴合视觉应用
在高科技日新月异的今天,手机柔性显示屏作为智能手机市场的新宠,以其独特的可弯曲、轻薄及高耐用性特性引领着行业潮流。然而,在利用贴合机加工这些先进显示屏的过程中,仍面临着诸多技术挑战。其中,高精度对位、应力控…...
《Python游戏编程入门》注-第3章3
《Python游戏编程入门》的“3.2.4 Mad Lib”中介绍了一个名为“Mad Lib”游戏的编写方法。 1 游戏玩法 “Mad Lib”游戏由玩家根据提示输入一些信息,例如男人姓名、女人姓名、喜欢的食物以及太空船的名字等。游戏根据玩家输入的信息编写出一个故事,如图…...
Netty-TCP服务端粘包、拆包问题(两种格式)
前言 最近公司搞了个小业务,需要使用TCP协议,我这边负责服务端。客户端是某个设备,客户端传参格式、包头包尾等都是固定的,不可改变,而且还有个蓝牙传感器,透传数据到这个设备,然后通过这个设备…...
centos安装指定版本的jenkins
打开jenkins镜像包官网,找到自己想要安装的版本,官网地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable 下载指定版本安装包: wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.452.…...
QT 周期性的杀死一个进程(软件),一分钟后自动退出
1.原因:某软件开机自启动很烦,搞一个程序干掉这个自启动的软件 2.QT代码 main.cpp #include "KillXXX.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);KillXXX k;return a.exec…...
MySQL任意版本安装卸载和数据库原理图绘制
MYSQL任意版本安装和卸载 安装: 1、解压文件 --- 不能出现中文路径 2、在解压目录(安装目录)下: 1>.创建data文件夹 2>.创建配置文件my.txt 然后修改成ini格式 3、修改配置文件 basedirD:\\mysql\\mysql-5.7.28-winx64…...
技术成神之路:设计模式(二十三)解释器模式
相关文章:技术成神之路:二十三种设计模式(导航页) 介绍 解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…...
wordpress ajax很慢/windows优化大师值得买吗
很多朋友正在学习单片机开发技术,但开发中免不了要碰到这样、那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产品的成本、体积、性能。这里介绍笔者的几个技巧,希望对大家的工作有帮助。 一.C语言中嵌入汇编语言 单片…...
四川杰新建设工程网站/培训课程有哪些
平时我们在使用git的时候,很少去关注其配置是如何,而在实际开发中,对git config这个命令的使用也并不是很多,但是配置对一个程序和项目来说都是很重要的,我们今天来看看git的配置以及git config的初步应用。 1. git co…...
wordpress部署https/廊坊首页霸屏优化
集群配置:1个nsqlookupd, 1个nsqadmin,3个nsqd 分区:1个order-topic,分区数为100,副本数为3 扩容时,新增一个nsqd-4。刚开始,nsqd-4没有任何分区副本。 接下来通过nsqadmin页面发现ÿ…...
wap网站 开发/百度用户服务中心
Python for 循环语句 Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 语法:...
谷秋精品课程网站建设软件/百度怎么推广自己的信息
1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型。 答: 编译型语言: 使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,…...
东莞最好的网站建设价格低/广州seo培训
满心热情与兴奋,最后变成了遗憾和伤心。 嗯,还有尴尬。 给61级讲Prim,课件合起来的话大概做了有一天多吧。 虽然没什么东西,但还是很用心地给他们写解释、流程,找例题习题,甚至还给他们出了一道题。 给他们…...