linux命令入门指南
linux命令入门指南
(个人学习所用,雷同之处请忽略)
关于linux
服务器种类
- 物理服务器
需要机房(零度、无尘、无静电)--防止机器短路,数据丢失。(建造自己的机房或者进行托管)
自己的服务器需要维护。 - 云服务器
由服务器厂商提供(阿里云、腾讯云)--省钱、有人维护 - vmware虚拟化技术
通过cpu的虚拟化技术,创建虚拟机服务器。
安装虚拟机linux参考:https://www.cnblogs.com/pyyu/articles/9313587.html
linux的优势
- 跨平台的硬件支持
- 丰富的软件支持
- 多用户多任务
- 可靠的安全性(文件系统)
- 良好的稳定性
- 完善的网络功能
硬件---(有效控制)---操作系统-->应用程序
linux的发展情况
- Linux以高效和灵活主城,Linux同事具有多任务、多用户的能力,支持多线程,多CPU。
- Linux包括了文本编辑器,高级语言编译器,以及图形用户界面登应用软件,当然绝大多数服务器都是使用命令行,文本模式操作Linux的。
- Linux遵循GNU通用公共许可协议,属于自由软件,用户不需要支付费用就可以获得系统和系统源代码,无偿使用且自由传播。
- Linux具有很高的系统稳定性和可靠性。
- 具有很高的系统安全性
- 众多业界厂商支持,如IBM、Oracle、Intel、HP、Google等
- 有完善的数据库平台,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等。
- 有完善的图形化用户界面,包括GNOME、KDE等。
- 有完善的开发平台,包括C/C++、Java、Python等。
linux发行版
Linux实际上只是定义了一个操作系统的内核,这个内核由kernel.org维护。不同的企业和组织在基础上开发了一系列的辅助软件,打包发布自己的“发行”版本。(这个发行版才叫操作系统)
- linux桌面程序 -- Ubuntu
- 服务器端linux -- Redhat(企业、收费)、CentOS(社区版、免费)
- 中文 -- 麒麟linux
linux和window区别
Windows:普通用户基本依靠图形界面操作,鼠标和键盘完成一切需求,上手简单容易
Linux:兼具图形界面(需要带有桌面环境的发行版Linux)和完全命令行操作,无法使用鼠标,新手入门困难,需要学习后方可使用,熟练后效率极高!
总结
-
操作系统是什么
是人与计算机硬件沟通的介质 -
操作系统组成---鸡蛋由几部分组成
- 蛋黄-系统内核
- 蛋清-命令解释器shell
- 蛋壳-应用程序
-
Linux是一套开放源代码程序、且可以自由传播的操作系统
-
掌握centos/redhat能更好的适应互联网服务端开发环境
-
使用linux的好处是自由传播,免费,不会犯法,任意切换图形/命令终端,安全稳定,不用杀毒软件,不卡
linux文件系统
1. window对硬盘分盘,存在多个主盘。而linux是从一个原点开始。
2. window是通过反斜杠(\)做分隔符,而linux是通过斜杆(/)作为分隔符
linux目录结构
-
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。 -
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 -
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。 -
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 -
/tmp:
这个目录是用来存放一些临时文件的。 -
/opt:(第三方软件存放目录)
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 -
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 -
/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。 -
/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 -
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 -
/usr/bin:
系统用户使用的应用程序。 -
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 -
/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
用户目录
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/用户名:
普通用户文件主目录。
linux用户系统
熟悉普通的命令
- ssh + 登录用户 + @ip 进行ssh隧道连接
输入密码可以成功连接
直到看到上次登录时间和欢迎词时登录成功。
在服务器命令行当中:
掌握普通用户登录后系统的提示符:$
掌握root用户登录后系统的提示符:#
- 查看终端情况
tty 查看当前终端
who am i 仅显示当前用户正在使用的终端和登录时间
w 查看所有终端(功能最全,显示用户名,终端标记,登录时间,负载等信息)
ssh连接在linux当中的配置文件
- 配置文件位置:/etc/ssh/sshd_config
- 通过次命令查看配置 grep -v '^#' /etc/ssh/sshd_config | grep -v '^$' -- grep管道符进行筛选、-v表示将筛选结果倒置(将筛出来的东西排除)、'^#' 所有#开头的注释,'^$'所有空行。
- 其中PasswordAuthentication yes表示ssh隧道允许使用密码登录。
linux目录文件操作
对文件夹的操作
命令 | 描述 | 备注 |
---|---|---|
ls + 路径 | 展示目录下的文件和文件夹 | 无 |
mkdir +文件名 | 创建文件夹 | 无 |
mv + 文件/文件夹路径 + 文件名/路径 | 文件夹重命名 | 当为路径时也可以进行文件移动 |
rm -rf | 删除文件或者文件夹 | -r无需确定进行删除、-f递归删除 |
rmdir | 删除空文件夹 | 对空文件夹进行删除 |
对文件的操作
命令 | 描述 | 备注 |
---|---|---|
ls + 路径 | 展示目录下的文件和文件夹 | 无 |
touch +文件名 | 创建文件 | 无 |
mv + 文件/文件夹路径 + 文件名/路径 | 文件夹重命名 | 当为路径时也可以进行文件移动 |
rm -rf | 删除文件或者文件夹 | -r无需确定进行删除、-f递归删除 |
通用命令
-
修改文件的修改时间
touch -t '07101530' 1.txt --将1.txt的文件修改时间修改为07月10日15:30
-
控制台输出和写入文件
echo '字符串' --将某字符串输出在终端
echo '字符串' >> 1.txt -- 将某字符串写入文件1.txt -
特殊符号
- '>>' 追加重定向,将文本写入文件末尾
- '>' 重定向符号,清空原来文件内容,然后进行覆盖写入
- '<' 输入重定向
- '<<' 将输入结果输入重定向
给几个例子
注意:wc -l为统计行数,< 可以将文件内容作为输入。
-
stat [参数] 文件
显示文件或文件系统状态
出现的结果如下例子:
解释如下:[root@master tmp]# stat 1.txt File: '1.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 17348002 Links: 1 (权限)Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) (最近访问)Access: 2018-07-10 15:30:00.000000000 +0800 (最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800 (最近改动)Change: 2018-11-07 15:38:36.400989868 +0800 Birth: -
相关参数如下:
-
-L, --dereference 跟随链接
-
-f, --file-system 显示文件系统状态而非文件状态
-
-c --format=格式 使用指定输出格式代替默认值,每用一次指定格式换一新行
--printf=格式 类似 --format,但是会解释反斜杠转义符,不使用换行作输出结尾。如果您仍希望使用换行,可以在格式中加入"\n"
-
-t,
--terse 使用简洁格式输出
--help 显示此帮助信息并退出
--version 显示版本信息并退出
-
格式化输出参数:
%a 八进制权限
%A 用可读性较好的方式输出权限
例如:
-
-
cat、more命令
查看文件:
cat:内容较少
more:内容较多#查看文件,显示行号 cat -n xxx.py #猫,查看文件 cat xxx.py #在每一行的结尾加上$符 [root@master tmp]# cat -E 1.txt #追加文字到文件 cat >>/tmp/oldboy.txt << EOF 唧唧复唧唧 木兰开飞机 开的什么机 波音747 EOF more /etc/passwd 按下空格space是翻页 按下b键是上一页 回车键向下读取内容
-
find 命令
Linux里如何找到需要的文件 例如 oldboy.py
输入格式:
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
参数
- -name 按照文件名查找文件
- -type 查找某一类型的文件,诸如:
- b - 块设备文件。
- d - 目录。
- c - 字符设备文件。
- p - 管道文件。
- l - 符号链接文件。
- f - 普通文件。
- s - socket文件
例子:
find /tmp/ -type f -name "oldboy.py" #找出/tmp所有以 .txt 结尾的文件 find /tmp/ -type f -name "*.txt" #找到/etc下所有名字以host开头的文件 find /etc -name 'host*' #找到/opt上一个名为settings.py find /opt -name 'settings.py'
-
grep 命令
-
语法:
grep [参数] [--color=auto] [字符串] filename -
参数:
- -i : 忽略大小写
- -n : 输出行号
- -v : 反向选择
- --color = auto : 给关键词部分添加颜色
- 管道符与grep配合快速搜索
-
语法:
命令A | 命令B常见用法: #检查python程序是否启动 ps -ef|grep "python" #找到/tmp目录下所有txt文件 ls /tmp|grep '.txt' #检查nginx的端口是否存活 netstat -tunlp |grep nginx
-
head、tail命令
查找头几行或者尾几行,
可以用来看持续更新的文件#查看前两行 head -2 /tmp/oldboy.txt #查看后两行 tail -2 /tmp/oldboy.txt #持续刷新显示 tail -f xx.log #显示文件10-30行 head -30 /tmp/oldboy.txt |tail -21
-
别名alias
Linux如何提示你,在使用rm、cp、mv这些命令时候,提醒你小心呢?
答案就是alias命令alias就可以设置别名,在你进行某些设置的命令时->先走别名的定义->再进行某些命令的操作
举例如下:
# 查看所有有别名的命令 [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' # 设置新别名以阻止危险操作 [root@iZ2zefuxklg0ufrapu0xnpZ ~]# alias rm='echo do not use rm' [root@iZ2zefuxklg0ufrapu0xnpZ ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='echo do not use rm' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@iZ2zefuxklg0ufrapu0xnpZ ~]# cd /tmp/ [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# ls a c oldboy [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# rm -r a do not use rm -r a [root@iZ2zefuxklg0ufrapu0xnpZ tmp]# ls a c oldboy # 取消别名 unalias rm
- 注意,此时设置的别名不会永久生效,需要设置配置文件
#设置别名永久生效,写入到/etc/profile(针对登录用户的合同,设置环境变量) vim /etc/profile #编辑文件 G # 快速到达最后一行 o # 当前行下一行,创建一个新行,进入编辑模式 # 加入两行 alias rm="echo do not use rm" source /etc/profile #读取文件(合同生效) # 退出重启后别名仍然成立
-
which命令
查找命令是否存在环境变量,或者存在在那个环境变量里面
- 注意与find区分
例:
-
scp命令
远程拷贝文件
和cp命令几乎一模一样,只是它是拷贝远程的文件。
例
-
du命令
显示文件大小
-
语法
du 【参数】【文件或目录】-s 显示总计
-h 以k,M,G为单位显示,可读性强
-
top命令
任务管理器
使用top之后调出系统情况:包括以下内容
解释如下:第一行 (uptime) 系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载 第二行:进程信息 进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数 第三行:cpu信息 1.5 us:用户空间所占CPU百分比 0.9 sy:内核空间占用CPU百分比 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比 97.5 id:空闲CPU百分比 0.2 wa:等待输入输出的CPU时间百分比 0.0 hi:硬件CPU中断占用百分比 0.0 si:软中断占用百分比 0.0 st:虚拟机占用百分比 第四行:内存信息(与第五行的信息类似与free命令) 8053444 total:物理内存总量 7779224 used:已使用的内存总量 274220 free:空闲的内存总量(free+used=total) 359212 buffers:用作内核缓存的内存量 第五行:swap信息 8265724 total:交换分区总量 33840 used:已使用的交换分区总量 8231884 free:空闲交换区总量 4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
-
lsattr和chattr命令
如何让root都删不掉你的文件 ->
给他加锁- lsattr 查看有没有锁
- chattr +某个参数 加锁
- chattr -某个参数 解锁
例:
-
时间命令
进行时间同步,保证机器时间与云端时间服务器相同
相关命令:
# 查看硬件时间 hwclock # 查看系统时间 date # 与阿里云的时间服务器同步 ntp -u ntp.aliyun.com [root@localhost ~]# date Thu Jul 11 00:31:17 CST 2024 [root@localhost ~]# hwclock Thu 11 Jul 2024 12:31:46 AM CST -0.993494 seconds [root@localhost ~]# ntpdate -u ntp.aliyun.com 11 Jul 00:32:28 ntpdate[10203]: step time server 203.107.6.88 offset 0.870400 sec
-
日期命令
查看日历
-y参数 查看一年的日历
[root@localhost ~]# cal July 2024 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@localhost ~]# cal -y ……
-
wget命令
对网页发get和post请求,详情参考命令手册。
-
window和linux互传:
lrzsz工具。(通过yum安装)
sz(向window发送文件)
rz(从linux接受文件)
例子如下:
还可以通过拖拽的方式拉入linux(xshell)
-
其他命令
命令 | 描述 | 备注 |
---|---|---|
pwd | 显示当前路径 | 显示目前自己在哪 |
clear | 清屏 | 无 |
cd + 路径 | 切换目录 | 表示自己要去哪 |
-
ls有许多常用的参数:
-a --显示指定目录下所有子目录和文件(包括隐藏)、
-l --以列表的形式显示详细信息(大小、权限信息)
-h --配合-l以更人性化的方式显示文件大小 -
mkdir 可以通过-p参数进行递归创建,{}包含的文件名可以在同级创建