Linux基础
云服务器
连接云服务器
- 首先要在本地安装xshell和xftp
- 然后通过xshell连接远程linux服务器:
root是linux系统的登录用户(不是腾讯云),4*.***.***.**6是云服务器的公网地址ssh root@4*.***.***.**6
Linux基础操作
- 复制粘贴:在xshell命令界面,通过右键进行复制粘贴命令
- 按
tab键进行文件名补全 - 命令结构:
ls -R /root:ls是命令,-R是选项(可组合,如-Rlh),/root是命令对象 - 蓝色文件名是文件夹,绿色一般是放命令的
man ls查看帮助文档bin是存放指令的,sbin是管理员用的指令,etc是配置文件夹,sys是系统文件,usr是安装的命令文件,tmp是临时文件夹。(在自己家目录下玩最安全)- etc/passwd 所有用户信息
- 访问web程序:host/html文件夹下面的目录
Linux基础命令
文件基础命令
- 显示路径
pwd - 路径跳转
cd /etc # 绝对路径 cd ../ # 相对路径:往上走一层 cd ./www # 相对路径:去当前目录下的www文件夹下 cd ~ # 回到家目录 - 显示目录
ls ls -a # 显示所有文件(包括隐藏文件) ls -A # 显示所有文件(不包括隐藏文件) ls -lh # 显示详情 ls -d # 不展开文件夹显示 ls *文件* # 模糊显示 - 创建文档
touch test.txt - 创建文件夹
mkdir dir1 mkdir -p dirt1/dir2/dirt3 # 递归创建 - 删除文件
rm test.txt rm text* # 模糊删除 rm -rf dir1 # 无询问删除 - 拷贝文件
cp test.txt /var/ cp test.txt /var/book.txt # 拷贝并重命名 cp -r dir1 /var/ # 递归拷贝文件夹(文件夹需要递归拷贝) cp test1 test2 /var/ # 同时拷贝两个 cp test1 /var/dir # dir是文件夹,则test1放到dir文件夹下;如果dir是文档,则test1放到var文件夹下并重命名成dir # 跨主机拷贝 scp -r root@192.168.1.20:/home/user/dir1 /home/lijunlong/ - 移动文件:规则和拷贝一致
mv dir1 /var/dir2 # 移动文件夹不需要`-r`
文件压缩
- tar打包:不压缩,打包和解包都会先拷贝一份源文件
tar -cf test.tar test1 test2 # 打包:test1和test2打包成test.tar tar -xf test.tar # 解包:test - gzip压缩:只能压缩单个文件
gzip test1 # 压缩:test1.gz gzip -d test1.gz # 解压:test1 - zip压缩:压缩和解压缩都会先拷贝一份源文件
zip test.zip test1 test2 # 压缩:test1和test2压缩成test.zip unzip test.zip # 解压:解压名称是源文件名称
文件查找
- 示例
locate test # 支持模糊查询,和everything软件类似,可用`updatedb`手动更新数据 find /root -name test # 和locate一样,但是数据是实时的,所以慢 find /root -name *.log -mtime +10 # 查找10天前被修改的日志
文本处理
- 进入编辑文档
Vim test1 # 打开或创建并打开文档 - 文档编辑操作
- 按
i进入编辑模式 - 按
esc返回到命令模式(不可输入命令),按:进入到底行模式(命令编辑模式) ^光标去到行首,$去行尾yy复制所在行,dd剪切所在行,p粘贴u撤销/关键字搜索(底行模式)
- 按
- 查看文本
cat test cat -n test # 显示行号 head -5 test # 开头5行 tail -f test # 文尾监视 - 管道:再处理
head -6 test | tail -3 - 计数:可以统计很多东西,不详述
cat test | wc -l # 计算行数 - 三剑客:grep
grep 二 test # 显示test中的所有带“二”的行 grep -c 二 test # 计算匹配的行数 grep -n 二 test # 把行号也显示出来 grep ^$ test # 显示空行 grep -v ^$ test # 显示非空行 - 三剑客:awk
awk -F 二 '{print $2}' test # 显示test被“二”分割的每一行的第2段 awk -F 二 '{if ($1 == "第") print $2}' test # 显示test被“二”分割,且第1段是“第”的每一行的第2段
用户相关
- 切换用户
su zhangsan - 登出
exit - 删除用户
userdel -r user1 # 前提是user1必须`登出`了才能删除 - 创建用户
# 先看是否存在用户 cat /etc/passwd # 展示所有用户,末尾是`bash`的才是可登录的用户 # 查看有哪些用户组(用户必须在组下面) cat /etc/group # 创建组:65是组id,不能和已有的重复 groupadd -g 65 testgroup # 创建用户:355是用户id(不能重复),主组是testgroup useradd -u 355 -g testgroup testuser
权限相关
- 变更文件主人
# 变更文档主人 chown newuser test1.txt # test1.txt新主人是newuser # 变更文件夹主人 chown -R newuser test1 # 递归授权 - 变更操作权限
chomd 755 test1 # 文档一般是644,文件夹一般是755(加了进入文件的`1`)
安装
- yum安装:联网安装(国外的库慢)
yum install tree yum remove tree # 卸载 rpm -qa | grep tree # 查看安装的tree rpm -qi mariadb # 查看安装包的详细信息 - rpm安装:安装rpm格式的
rpm -ivh zendao_2.3.rpm # 指定位置安装,有的不能指定位置,要根据安装包的详细信息看能不能指定 rpm -ivh --prefix=/user/root zendao_2.3.rpm - 源码安装:配置、编码、安装,格式一般是tar.gz
- 先解压安装包:解压后看README看安装步骤
- 配置:一般配置文件在
config文件中,可以指定位置,也可以不指定
./configure --prefix=/user/root- 编码:直接在命令行输入
make回车就会执行文件中的makefile - 安装:命令行输入
make install回车即可 - 查看命令:在安装程序的地方打开文件的
bin文件夹,里面是程序的所有命令,直接输入这些命令即可执行 - 配置环境变量:上面的命令只能在程序的
bin文件夹中或者加上路径执行,要在任意地方不加入路径也能执行,要配置到环境变量中,让系统认识该指令 - 通过将快捷方式放入环境变量中的
bin文件夹实现:本质上,只要在环境变量的路径中,系统就能识别出路径中的指令 - 通过
echo $PATH打印出环境变量有哪些路径 - 然后给程序的
bin创建快捷方式
# 前面的路径是程序的bin文件,后面的路径是一个环境变量路径 ln -s /user/root/zendao/bin /user/bin- 源码卸载就是把解压的文件删除就行
- zip安装
- 直接解压就行,卸载就删除
- 脚本安装:有的程序可能要反复安装,跑脚本就不用手动操作了
- 先写脚本
#!/bin/bash echo "开始安装阿帕奇" yum -y install httpd httpd-devel systemctl start httpd systemctl enable httpd # 略 - 安装jdk:java开发的软件都需jdk环境,和windows里面一样
- 下载jdk的rpm安装包,并通过rpm安装
- 通过find命令找到安装地址
- 目前的jdk没有jre文件夹,进到安装的jdk文件中要添加一个jre文件夹
- 添加到系统配置文件中:效果和快捷方式放入环境路径效果一致
vim /etc/profile- 在profile文档中加入这么几句
JAVA_HOME=/user/java/jdk-15.0.2 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib PATH=%PATH:$JAVA_HOME%/bin:$JAVA_HOME/jre/bin export PATH=CLASSPATH JAVA_HOME- 让环境变量生效
source /etc/profile- 安装好后通过
java -version查看版本
Linux系统命令
进程相关
- 动态进程(不显示不活动的)
top - 静态进程(所有进程)
ps -ef - 查看网络情况
netstat -tupln # 显示使用网络的进程信息,包括端口号 - 开放端口:这里开放80端口,
add换成remove就是关闭firewall -cmd --zone=public --add-port=80/tcp --permanent # 如果报`firewall.service: Unit not found`,执行: yum install firewalld systemctl unmask firewalld systemctl enable firewalld systemctl start firewalld - 杀进程
kill -9 8976 # 8976是pid - 关机和重启
shutdown -h now reboot -h now - 显示系统时间
date
Linux高级一点的命令
打印
- 示例:特殊字符要转义
echo hello echo $PATH # 打印变量
变量
- 示例:等号两边不能有空格
a=你好 echo $a
输入:类似python的input
- 示例
read -p "请输入:" name echo $name # 打印出输入的内容
命令替换:命令嵌套
- 规则:反引号内的命令要先执行了,结果在用来执行外面的。不加反引号结构就不是正常的命令结构,不会执行。
echo `cat /etc/passwd | grep root`