远程登录
ssh -p 50022 my@127.0.0.1
-p 后面是端口
my 是服务器用户名
127.0.0.1 是服务器 ip
文件和目录
用户目录
位于/home/user,称之为用户工作目录或家目录,表示方式:
/home/user
~
- 相对路径和绝对路径
- 绝对路径:
从/目录开始描述的路径为绝对路径,表示从 根目录/家目录 开始的具体目录位置。如:
/home
/usr
- 相对路径
从当前位置开始描述的路径为相对路径,表示相对 当前目录 所在的目录位置。如:
../../
abc/def
. 和 ..
. 表示当前目录
.. 表示上一级目录,即父目录
注: 根目录下的.和..都表示当前目录文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r) 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
- 写权限(w) 对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
- 可执行权限(x) 对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
常用基本命令
- Linux命令格式:
command [-options] [parameter1] …
command: 命令名,相应功能的英文单词或单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略, []代表可选
parameter1 …:传给命令的参数:可以是零个一个或多个
自动补全:
在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令。
history:
当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来。
clear: 清除终端屏幕。
history -c : 清除历史命令命令
- 查看帮助文档
- help
一般是linux命令自带的帮助信息
如:ls --help - man(manual)
man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明。
该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。
如:man ls ; man 2 printf
man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
一、文件和目录命令
pwd
显示当前所在目录cd
切换工作目录
cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
命令 | 含义 |
---|---|
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd .. | 进入当前目录的上一级目录 |
cd - | 可进入上次所在的目录 |
- ls
list,查看当前目录下的内容。
选项 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
注:Linux文件或者目录名称最长可以有265个字符,“.”代表当前目录,“..”代表上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。
多个选项可以放到一起写,没有前后顺序。如:ls -lh
常用通配符
touch
创建文件或修改文件时间
1、如果文件不存在,创建新的空文件。
2、如果文件已经存在,修改文件的末次修改时间。mkdir
创建一个新的目录。
新建目录的名称不能与当前目录中已有的目录或文件同名。
|选项|含义|
|:---|:---|
| -p | 递归创建目录|rm
删除文件或目录, 文件删除后不能恢复。
为了防止文件误删,可以在 rm 后使用 -i 参数以逐个确认要删除的文件。
选项 | 含义 |
---|---|
-i | 以进行交互式方式执行 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
- rmdir
删除一个空目录。
二、拷贝和移动命令
- tree
以树状图列出文件目录结构
选项 | 含义 |
---|---|
-d | 只显示目录 |
- cp
将给出的文件或目录复制到另一个文件或目录中。
复制目录 必须加 -r
选项 | 含义 |
---|---|
-a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 |
-f | 已经存在的目标文件而不提示 |
-i | 交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
-r | 若源文件是目录,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
- mv
移动文件或目录,也可以给文件或目录重命名。
选项 | 含义 |
---|---|
-i | 误覆盖文件前提示 |
-v | 显示移动进度 |
三、文件内容命令
- cat
查看或者合并文件内容
会一次显示所有内容,适合查看内容较少的文本文件。
将test1.txt和test2.txt中的内容添加到t.txt中
cat test1.txt test2.txt > t.txt
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
- more
分屏显示文件内容,每次只显示一页内容,适合查看内容较多的文本文件。
操作建 | 功能 |
---|---|
空格键 | 可以显示下一页 |
回车键 | 向下滚动一行 |
q键 | 退出显示 |
/word | 搜索word字符串 |
- grep
文本搜索工具,如果找到匹配的文本, grep打印包含该文本的所有行。支持正则匹配。
格式:
grep [-选项] '搜索内容串' 文件名
选项 | 含义 |
---|---|
-n | 显示匹配行和行号 |
-v | 显示不包含匹配文本的所有行 |
-i | 忽略大小写 |
四、其它命令
- wc 统计指定文件中的字节数、字数、行数
选项 | 含义 |
---|---|
-c | 统计字节数 |
-l | 统计行数 |
-m | 统计字符数。这个标志不能与 -c 标志一起使用。 |
-w | 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。 |
- echo 文字内容
会在终端中显示参数指定的文字,通常会和 重定向 联合使用。
user:~ user$ echo hello
hello
重定向 > 和 >>
将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。
> 表示:会覆盖原来的内容
>> 表示:会追加到文件的尾部管道 |
一个命令的输出可以通过管道做为另一个命令的输入。
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。
如:ls -lh | more
常用的管道命令:
more: 分屏显示内容
grep: 在命令执行结果的基础上查询指定的文本
统计某个目录中,文件及目录个数:ls | wc -l
五、远程管理常用命令
- shutdown
安全关闭 或 重新启动系统
格式:shutdown 选项 时间
选项 | 含义 |
---|---|
-r | 重新启动 |
不指定选项和参数,默认表示1分钟之后关闭电脑。
远程维护服务器时,最好不要关闭系统,而应该重新启动系统。
常用命令:
$ shutdown -r now 立即重新启动
$ shutdown now 立即关机
$ shutdown 20:25 20:25关机
$ shutdown +10 10分钟后自动关机
$ shutdown -c 取消之前的关机计划
$ reboot 立即重新启动
$ sync 把内存数据同步到磁盘
ifconfig
查看或配置网卡信息
$ ifconfig 查看网卡配置信息
$ ifconfig | grep inet 查看网卡对应ip地址
注:一台计算机中更可能会有一个物理网卡和多个虚拟网卡,在Linux中物理网卡的名字通常以 ensXX表示。
127.0.0.1 被称本地环回/环回地址 , 一般用来测试本机网卡是否正常。uptime
计算机在线时间,开机以来到现在运行的时间。uname
语法:
uname 获取操作系统类型
uname -a 获取全部系统信息(类型、全部主机名、类型版本、发布时间、开源计划)-
netstat -tnlp
-t 只列出tcp连接的服务
-n 将地址从字母组合转换成ip地址,将协议转化成端口号显示
-l 只显示state(状态)列中,值为LISTEN(监听)的连接
-p 显示发起连接的进程pid和进程名称 ping
$ ping IP地址 监测目标主机是否连接正常
$ ping 127.0.0.1 监测本地网卡工作正常
原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在。
注:在Linux中,想要终止一个终端程序的执行,绝大多数都可以使用 Ctrl + C。
- SSH
通过SSH客户端,我们可以连接到运行了SSH服务器的远程机器上。
SSH客户端是一种时用secure shell (SSH)协议连接到远程计算机的软件程序。
有关SSH配置信息都保存在用户家目录下的.ssh目录下。
格式:
ssh [-p port] user@remote
user: 在远程主机上的用户名,如果不指定的话,默认为当前用户。
remote: 远程主机的地址,可以是IP/域名,或者别名。
port: 是SSH server监听的端口,如果不指定,就是默认值22。
注:
使用 exit 退出当前用户的登录。
- scp
secure copy,是一个在Linux下进行远程拷贝文件的命令。
它的地址格式与ssh类似,注意在指定端口时用的是大写的 -P。
# 把本地当前目录下的t1.txt复制到远程家目录下的Desktop/t1.txt:
$ scp -P port t1.txt user@remote:Desktop/t1.txt
# 注::后面的路径如果不是绝对路径,则以用户家目录作为参照路径
# 把远程家目录下的Desktop/t1.txt复制到本地当前目录下:
$ scp -P port user@remote:Desktop/t1.txt t1.txt
# 把本地当前目录下的test文件夹复制到远程家目录下的Desktop
$ scp -P port -r test user@remote:Desktop
- ssh高级
-
免密码登录
步骤:
1)配置公钥
执行$ ssh-keygen
即可生成SSH钥匙,一路回车即可。
2)上传公钥到服务器
执行$ ssh-copy-id -p port user@remote
可以让远程服务器记住我们的公钥
配置别名
每次都输入$ ssh -p port user@remote
很麻烦,配置别名,可以使用譬如:ssh mac代替上面一大串
在~/.ssh/config中追加以下内容:
Host mac(别名)
HostName 远程服务器ip地址
User userName(远程服务器用户名)
Port 22(远程服务器端口)
保存之后,即可用ssh mac登录了。
用户权限相关命令
一、用户和权限的基本概念
- 基本概念
用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组管理。
在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。
Unix/Linux系统中的root账号通常用于系统的维护和管理,它对Unix/Linux操作系统具有不受限制的访问权限。
文件和目录的权限包括:
权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | execute | x | 1 |
不具任何权限 | - | 0 |
组
为了方便用户管理,提出了组的概念,可以先对组设置好权限,然后将不同的用户添加到对应的组中,从而不用一次对每一个用户设置权限。ls-l 扩展
可以查看文件夹下文件的详细信息,从左到右依次是:
权限:第一个字符如果是d,表示目录
硬链接数:就是有多少种方式可以访问到当前目录/文件,通常文件的硬链接数为1,目录的硬连接数取决于这个目录包含几个子目录(如果包含两个子目录,就是4)
拥有者:家目录下文件/目录的拥有者通常都是当前用户
组
大小
时间
名称
目录 | 拥有者权限 | 组权限 | 其他用户权限 | |
---|---|---|---|---|
文件权限示例 | - | r w - | r w - | r - - |
目录权限示例 | d | r w x | r w x | r - x |
-rwxr-xr-x@ 1 user staff 201 8 16 16:11 hello.py
drwxr-xr-x 6 user staff 192 8 17 11:40 linux
- chmod的简单使用
chmod可以修改 用户/组 对 文件/目录 的权限。
命令格式:
chmod u/g/o/a +/-/=rwx 文件名/目录名
注:以上方法会一次性修改 拥有者/组 权限。
u/g/o/a | 含义 |
---|---|
u | user 表示该文件的所有者 |
g | group 表示与该文件的所有者属于同一组( group )者,即用户组 |
o | other 表示其他以外的人 |
a | all 表示这三者皆是 |
[+-=] | 含义 |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
- 超级用户
Linux系统中的root账号通常用于系统维护和管理,对操作系统的所有资源具有所有访问权限。
sudo
su是substitute user的缩写,表示使用另一个用户的身份。
sudo命令用来以其他身份来执行命令,预设的身份是root。
二、组管理
命令 | 作用 |
---|---|
groupadd 组名 | 添加组 |
groupdel 组名 | 删除组 |
cat /etc/group | 确认组信息 |
chgrp -R 组名 文件\目录名 | 递归修改文件\目录的所属组 |
注:创建组/删除组 的终端命令都需要通过sudo执行。
三、用户管理
- 创建用户
在Unix/Linux中添加用户账号可以使用adduser或useradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令的使用格式完全一样。
useradd命令的使用格式:useradd [参数] userName
参数 | 含义 |
---|---|
-d | 指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录 |
-m | 自动建立目录 |
-g | 指定组名称, 如果不指定组名,那么系统会自动创建一个和用户名一样的组名 |
注:创建用户、删除用户、修改其他用户密码的终端命令,需要通过sudo执行。
设置密码 passwd
在Unix/Linux中,超级用户可以使用passwd命令为普通用户设置或修改用户口令。用户也可以直接使用该命令来修改自己的口令,而无需在命令后面使用用户名。删除用户 userdel
命令 | 含义 |
---|---|
userdel abc(用户名) | 删除abc用户,但不会自动删除用户的主目录 |
userdel -r abc(用户名) | 删除用户,同时删除用户的主目录 |
- which 查看命令所在位置
which 命令可以查看执行命令所在的位置。
$ which ls
# 输出: /bin/ls
切换用户 su
可以通过su命令切换用户,su后面可以加“-”。su和su –命令不同之处在于,su -切换到对应的用户时会将当前的工作目录自动转换到切换后的用户主目录。
格式:su - 用户名
修改文件权限的命令
命令 | 作用 |
---|---|
chown | 修改 文件/目录 拥有者 |
chgrp | 修改 文件/目录 所属组 |
chmod | 修改 文件/目录 权限 |
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
# 递归修改文件|目录的所属组
chgrp -R 组名 文件名|目录名
# 递归修改文件|目录权限
chmod -R 755 文件名|目录名
四、系统信息相关命令
- 时间和日期
命令 | 作用 |
---|---|
cal | 查看当前月日历 |
cal -y | 显示当前年整年日历 |
cal -Y | 从当月开始 一年日历 |
cal -y 2020 | 2020年日历 |
date | 显示或设置时间 |
date +%F | 等价于 date "%Y-%m-%d" 输出格式2020-08-20 |
date "+%F %T" | 等价于"+%Y-%m-%d %H:%M:%S" 输出格式2020-08-20 09:34:36 |
date -d "-1 day" "+%Y-%m-%d %H:%M:%S" | 获取1天前时间 |
date -d "+1 year" "+%Y-%m-%d %H:%M:%S" | 获取1年后时间 |
- 磁盘信息
命令 | 作用 |
---|---|
df -h | disk free 显示磁盘剩余空间 |
du -h [目录名] | disk usage 显示目录下的文件大小 |
du -sh | 查看目录的真实大小 |
-s 只显示汇总大小
-h 以较高可读性的形式显示
- 内存使用情况
free -m 以M为单位显示 当前内存使用情况
参数 | 含义 |
---|---|
-h | 以人性化的形式显示文件大小 |
- 进程信息
查看进程信息:ps
process status查看进程的详细状况, 默认只会显示当前用户通过终端启动的应用程序。
选项 | 含义 |
---|---|
e | 列出全部进程 相当于a |
a | 显示终端上的所有进程,包括其他用户的进程 |
f | 显示全部的列(显示全字段) |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
ps -ef
列的含义:
UID: 该进程执行的用户id
PID: 进程的id
PPID: 该进程的父级进程id,如果一个程序的父级进程id找不到,该进程称为僵尸进程
C: cpu占用率 形式是百分数
STIME: start time,该进程启动时间
TTY: 终端设备,发起该进程的设备识别符号,?表示不是由终端设备发起
TIME: 进程执行时间
CMD: 进程名称或对应路径
动态显示进程:top
动态显示运行中的进程 并排序
top命令能够在运行后,在指定的时间间隔更新显示信息。
在top命令执行后,可以按下按键得到对显示的结果进行排序:
按键 | 含义 |
---|---|
M | 根据内存使用量来排序 |
P | 根据CPU占有率来排序 |
T | 根据进程运行时间的长短来排序 |
q | 退出 |
列的含义:
PID: 进程的id
USER: 该进程对应的用户
PR:优先级
VIRT: 虚拟内存
RES: 常驻内存
SHR: 共享内存
一个进程实际使用内存 = 常驻内存(RES)- 共享内存(SHR)
S: 表示进程的状态(S表示睡眠,R表示运行)
%cpu: cpu的占用百分比
%MEM: 内存的占用百分比
TIME+: 执行的时间
COMMAND: 进程的名称或者路径
终止进程
- kill命令指定进程号的进程,需要配合 ps 使用。
语法:kill [-signal] pid
kill [-9] 进程代
终止指定代号的进程,-9表示强行终止 - killall
语法:killall 进程名称
注:使用kill命令时,最好只终止当前用户开启的进程,而不要终止root身份开启的进程,否则可能造成系统崩溃。
五、其他命令
查找文件 find
通常用来在特定的目录下搜索符合条件的文件。
find [路径] -name "*.py"
查找指定路径下扩展名为.py的文件,包括子目录
find [路径] -size +2M
查找在指定路径下大于2M的文件
find /etc/ *.conf | wc -l
查找ect目录下.conf的文件,计算个数
find /etc/ -type f
查找etc目录下所有文件
find /etc/ -type d
查找etc目录下所有目录
如果省略路径,表示在当前目录下查找。service命令
作用:用于控制一些软件服务的启动、停止、重启
语法:service 服务名 start/stop/restart
service httpd start
启动Apache服务
- 建立链接文件:ln
Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接。
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:
ln 源文件 链接文件
ln -s 源文件 链接文件
如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在。
注意:如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
- 打包压缩
- 打包/解包 tar
格式:tar [参数] 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用
参数 | 作用 |
---|---|
-c | 生成档案文件,创建打包文件 |
-x | 解开档案文件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后 |
#打包文件
$ tar -cvf 打包文件.tar 被打包的文件/路径(多个文件用空格分隔)
#解包文件
$ tar -xvf 打包文件.tar
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是
- 压缩/解压 gzip
tar与gzip命令结合使用实现文件打包、压缩。
tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
格式:gzip [选项] 被压缩文件
选项 | 作用 |
---|---|
-d | 解压 |
-r | 压缩所有子目录 |
在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法:tar cvzf 压缩包包名 文件1 文件2 ...
# 压缩文件
$ tar -zcvf 压缩文件.tar.gz 被压缩文件
# 解压缩文件
$ tar -zxvf 压缩文件.tar.gz
# 解压缩到指定路径
$ tar -zxvf 压缩文件.tar.gz -C 目标路径
- 压缩/解压 bzip2
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。其扩展名一般用xxxx.tar.bz2
压缩用法:tar -jcvf 压缩包包名 文件...
解压用法:tar -jxvf 压缩包包名
- 压缩/解压 zip、unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
- 软件安装/卸载 apt
apt (advanced packaging tool)是Linux下一款安装包管理工具。
# 安装软件
$ sudo apt install 软件包
# 卸载软件
$ sudo apt remove 软件包
# 更新已安装的包
$ sudo apt ungrade
快捷键
- 删除光标前的内容
Ctrl + u - 删除光标后的内容
Ctrl + k