操作系统
- 功能:管理硬件、提供系统调用
- 桌面OS:Windows、Mac(基于Linux)、Linux
- 服务器OS:Linux(安全,免费,稳定,占有高)、Windows server
- 嵌入式OS:Linux(智能家居)
- 移动设备OS:IOS、Android(基于Linux)
虚拟机
- 功能:软件模拟
OS发展历史
- Unix:C语言开发,私有,多用户
- Linux:开源,多用户:
- 内核版(Kernel):核心,管理硬件,系统调用,终端命令
- 发行版:内核+桌面等应用程序
- Ubuntu
- Redhat
- CentOS
- 文件目录:只有一个/根目录,每个用户在/home下面有自己的文件目录
- /:根目录
- /home:所有用户的家目录
- /etc:存放系统配置文件
- /bin:存放可执行的二进制文件,ls、mv、cat
- /sbin:保存超级用户的管理程序
- /boot:存放系统启动使用的文件
- /dev:存放设备文件
- /lib:存放函数库的目录
- /lost,/fount:存放系统异常时将遗失片段
- /mnt,/media:光盘挂载点
- /opt:额外安装软件目录
- /proc:存放常用文件,常驻内存
- /root:系统管理员root的家
Linux终端命令
- 历史:刚开始无图形界面,现在才有;然而,现在对服务器的维护安装SSH客户端,也是终端命令。
- 常见终端命令:
- ls:查看当面路径内容
- pwd:查看当前目录
- cd【目录】:切换目录
- touch【文件名】:如果文件不存在,新建文件
- mkdir【目录】:创建目录
- rm【文件名】:删除不能恢复
- clear:清屏
- 放大缩小终端:
- ctrl shift = -
- ctrl + -
终端命令的格式:
- command 【-options】 【parameter】
- 查询某种命令的使用帮助:
- command --help
- man command
- 空格:显示下一屏
- Enter:显示下一行
- b:回滚一屏
- f:前滚一屏
- q:离开
- 文件目录常用命令:
- 查看目录内容:ls
- .开头的文件是隐藏文件
- ls -a:查看包括隐藏文件的全部文件
- .表示当面目录
- ..表示上级目录
- ls -l:列表显示详细信息
- ls -lh:把文件大小人性化显示
- 通配符:
- .表示任意个数字符
- ?表示一个字符
- []匹配的字符组:[a-d]=[abcd]
路径相关
- 切换路径:cd
- 显示当前目录:pwd
- cd=cd ~:一键回家
- cd .:保持在当前目录不变
- cd ..:切换到上级目录
- cd -:在最近两次目录间切换
- 绝对路径:从/开始
- 相对路径:从当前目录开始
创建和删除:
- touch:摸一下,不存在就创建,存在就更新末次修改时间
- mkdir:注意同意路径下,目录和文件不能同名
- rm:删除后不能恢复
- rm 【文件名】
- rm -r【目录名】:递归删除
- rm -f【】:强制删除
拷贝和移动文件:
- tree:列出文件树
- tree -d:只显示目录
- cp 【源文件路径名/源文件名】 【目标文件路径名/目标文件名or目标路径】
- cp -i 【】【】:覆盖前提示
- cp -r 【源目录】 【】
- mv【源文件】【目标文件】
- 如果在同一目录,会导致覆盖
- mv -i 【】 【】:提醒可能导致覆盖
查看文件:
- cat 【文件名】:一次显示全部
- Cat -b:不标识空行
- Cat -n:标识空行
- more 【文件名】:
- 空格:显示下一屏
- Enter:显示下一行
- b:回滚一屏
- f:前滚一屏
- q:离开
- grep 【字符】【文件名】:查找文件中的字符内容
- grep -n 【】 【】:显示行号
- grep -v 【】 【】:显示不包含字符的行
- grep -vn 【】 【】:显示不包含字符的行号
- grep -i 【】 【】:忽略大小写
- grep -in 【】 【】:忽略大小写并显示行号
- 模式查找:
- ^a:搜以a开头的行
- ke$:搜以ke结尾的行
其他:
- echo 【】:终端显示【】
- 重定向:将本应该显示在终端的内容,重定向到文件中
- >:输出,覆盖源文件
- >>:追加末尾
- 管道:【命令1】|【命令2】
- 将一个命令的输出作为另外一个命令的输入
- 自动补全:
- 敲文件/目录/命令名时,先敲前几个字母,然后tab,系统自动补全,或者显示匹配的文件/目录/命令名
- 曾经使用过的命令:
- 向上/向下:
- ctrl c:直接返回
远程管理常用命令
- 关机,重启:Shutdown 【选项】 【时间】
- -r:重新启动服务器
- 不指定选项和时间,1分钟后关闭电脑(一般不会把服务器关掉的)
- +10:10分钟后关机
- 网卡:负责网络通讯的硬件设备
- 查看,配置网卡:ifconfig
- 检测IP是否正常:Ping 【IP地址】
- 127.0.0.1:本地环回地址,测自己的网卡是否正常
- ssh:通过ssh客户端来连接运行了ssh的服务器,并且数据传输是加密且压缩的,端口号是22
- ssh 【-p port】 【user】@【remote】
- 注意ssh只能在linux或者unix用,windows需要安装Putty或者XSheel
- exit:关闭连接
- 有关SSH的配置信息存储在.ssh目录下,这是个隐藏目录,一旦确定连接某个主机 ,系统会建一个knowhost隐藏文件保留相关信息
- scp:远程安全拷贝文件,把本地开发的程序文件拷贝至服务器上,或者把服务器上的文件考下来
- scp -P 【port一般是22】 【-r】 【本地文件】 【user】@【remote】:【远程路径】
- 把本地文件复制到远程路径
- scp -P 【port一般是22】 【-r】 【user】@【remote】:【远程路径】 【.】
- 把远程路径文件下载到当前目录
- -r:复制文件夹
- windows和linux服务器怎么传文件?不能用scp
- FileZilla:使用FTP服务,端口使用21
- 21是控制端口,20是数据端口
- SSH:免密码登陆,因为数据已经加密了
- 第一步:配置密钥:ssh-keygen
- 第二步:上传密钥到服务器:ssh-copy-id -p port 【user】@【remote】
- id_rsa.pub文件是公钥,id_rsa文件是私钥
- 非对称算法:使用公钥加密的数据,用私钥解密;反之同理
- 本地使用私钥,服务器使用公钥
- SSH:配置别名
- 每次输入ssh -p 22 user@ip太麻烦了,可以直接ssh 【别名】
- 方法:在.ssh/下新建一个config文件,内容:
- Host 【别名】
- HostName 【ip】
- User 【用户名】
- Port 【22】
用户权限
- Linux可以指定每个用户对不同的文件或者目录的权限
序号 | 权限 | 英文 | 缩写 | 数字代号 |
1 | 读 | read | r | 4 |
2 | 写 | write | w | 2 |
3 | 执行 | excute | x | 1 |
- 组:可以对组设置权限
- 超级用户root:用于系统维护,对所有资源均可以管理,不推荐直接用root,如果普通用户要维护系统,可以:
- sudo加在命令前,有效期5分钟,超时后再输入密码
ls -l扩展:(组名与用户名常一样)
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
1 | -代表文件 | 拥有者权限 rw- | 组权限 rw- | 其他用户权限 r-- | 硬链接数 | 用户名 | 组名 | ||||||
2 | d代表文件夹 | 拥有者权限 rwx | 组权限 rwx | 其他用户权限 r-x |
- 硬链接数目:实际上是指有多少种方式访问该文件
- chmod修改用户/组对于文件/目录的权限
- chmod 【+ or -】 【rwx】 【文件名 or 目录名】
组管理:(创建删除组的命令需要使用sudo)
- 添加组:groupadd 【组名】
- 删除组:groupdel 【组名】
- 确认组信息:cat /etc/group
- 该路径存放了组配置信息
- 修改文件/目录的所属组:chgrp -R 【组名】 【文件 or 目录名】
- 组信息保存在/etc/group文件中
- 一个用户可以属于不同的组
用户管理:(创建删除用户的命令需要使用sudo)
- 创建用户:
- useradd -m -g 【指定用户所在组名】 【用户名】
- -m自动建立用户家目录
- 设置/修改用户密码:passwd 【用户名】
- 若不设置密码,ssh不了
- 删除用户:
- userdel -r 【用户名】
- -r自动删除用户家目录
- 用户信息保存再etc/passwd文件中
- 注意usr/bin/passwd是用于修改用户密码的程序
查看用户信息
- id 【用户名】:查看用户的uid、gid,若不输入用户名,输出当前用户信息
- who:查看当前所有登陆用户列表
- whoami:查看当前登陆用户名
usermod
- usermod -g 【组】 【用户名】:修改用户的主组
- usermod -G 【组】 【用户名】:修改用户的附加组
- usermod -s /bin/bash:修改用户登陆shell
- Shell:可以输入命令的窗口
- dash:ubuntu默认的,但是不好看
- bash:好看
which 【命令】 :查看执行命令所在的位置
切换用户:
- su:直接切换到root,不安全
- su【-】【用户名】:切换到【用户名】
- 如果用-,则切换到【用户名】的家目录
- exit:退出当前登陆用户
修改文件权限:
- chown:修改拥有者:
chown 【新的用户名】 【文件名】or【目录名】
- chgrp:修改组
chgrp -R 【组名】 【文件名】or【目录名】
- chmod:修改权限
chmod -R 755 【文件名】or【目录名】
系统信息相关命令
- 时间和日期:
- date:查系统时间
- cal:查日历,-y查看一年日历
- 磁盘信息:
- df -h:显示磁盘剩余空间(disk free)
- du -h 【目录名】:显示目录下的文件大小(disk usage)
- 进程信息:
- ps aux:查看进程的详细情况(process station),一般用au
- top:动态显示进程,并排序,退出输入q
- kill 【-9】 【进程号】:杀死指定进程,-9表示强行终止
查找文件:find 【路径】-name “【条件】”,不指定路径就从当前开始
软链接:类似于windows的快捷方式,ln -s 【被链接的源文件绝对路径】【链接名】,若不用-s就是硬链接
打包压缩:
- 打包压缩方式:windows用rar,mac用zip,linux用tar.gz
- tar是linux的文件打包工具:
- 打包:tar -cvf 【打包文件】.tar 【被打包的文件】
- 解开:tar -xvf 【打包文件】.tar
- gzip可以压缩tar包,生成文件格式为:xxx.tar.gz
- 压缩:tar -zcvf 【打包压缩文件】.tar.gz 【被打包压缩的文件】
- 解开:tar -zxvf 【打包文件】.tar.gz -C 【目标路径】
- bzip2可以压缩tar包,生成文件格式为:xxx.tar.bz2
- 压缩:tar -jcvf 【打包压缩文件】.tar.bz2 【被打包压缩的文件】
- 解开:tar -jxvf 【打包文件】.tar.bz2 -C 【目标路径】
apt安装卸载更新软件包:
- 安装软件:sudo apt install 【软件包】
- 卸载软件:sudo apt remove 【软件名】
- 更新软件:sudo apt upgrade
- 配置软件源(配置镜像服务器地址),国内网络访问Ubuntu服务器太慢了,不如使用国内的镜像服务器
- 系统设置-》软件和更新-》下载至-》选择最佳下载服务器