Linux工具的学习

Updated on with 0 views and 0 comments

Linux工具的学习

Linux工具

Linux介绍

发布由1991年8月一 位来自芬兰赫尔辛基大学的年轻人

作者林纳斯 本纳第克特 托瓦兹(Linus Benedict Torvalds, 1969 年~)制作开源的Linux 内核(核心代码)

多用户、多任务、支持多线程和多CPU的操作系统

组织和个人二次开发 实现功能扩展的发行版

Linux 发行版本 红帽、红旗、ubuntu、centos等

Ubuntu(个人爱好者开发的,社区版,版本更新迭代快,一天多版本?广大爱好者,最潮流、最新的,不稳定,世界范围用的多,不属于国内公司的发行版)

主要CentOS(组织开发维护的发行版,以稳定著称,版本更新迭代慢,CentOS后续不在更新,到8就没了)

Debian、Red Hat 等

CentOS版本

选用 7.3(1611版本)使用 4.1G 的版本

VMware14 虚拟机 安装(尽量保证相同版本卸载、安装)

高版本 改 低版本 容易造成不能用!!注册表残留

安装 VMware 裸机

一个虚拟机 正常情况 最小 20 G

拆分多个文件 方便挂个硬盘 做 扩容

安装 CentOS系统

BIOS是软件,CMOS是硬件,BIOS运行在CMOS上。

BIOS是基本输入输出系统,Basic input-output System的缩写,它负责系统从硬件启动到操作系统,当然还负责开机的自检,以及对计算机功能的设置,比如启用、禁用USB,更改硬盘接口模式等等。我们装系统时候按F2所进入的蓝色界面就是BIOS了,常见的BIOS有:Award BIOS AMI BIOS Phoenix BIOS等。

CMOS是Complementary Metal Oxide Semiconductor,互补金属氧化物,从名字就可以看出是硬件。它负责存储BIOS的信息,其通常由一块纽扣电池供电,通过取下电池,可以清除里面保存的数据信息。

(acer)宏碁:进入BIOS需按F2,进入Boot引导需按F12

WIN10 系统

找寻Intel Virtualization Technology选择Enable,按enter键,最后保存退出即可( F10 保存退出)

打开电脑 bios 系统 设置允许安装虚拟机(宽宽的大引脚,半硬件的系统 保存电脑基础设置 CMOS芯片 开机时候进去)

内存和实际内存挂钩的

处理器是模拟的

硬盘 20G + 不存在分区

CD/DVD(IDE)

.iso是电脑上光盘镜像(CD Mirror)的存储格式之一,因为其是根据ISO-9660有关CD-ROM文件系统标准存储的文件,所以通常在电脑中以后缀.iso命名,俗称iso镜像文件。

ctrl + alt 显示/隐藏 鼠标

安装 选择中文 需要确认硬盘大小

设置的密码 为 123 过于简单 确定 两次 用户名 默认为 ROOT

安装 300 多个文件 等 重启

命令窗口 传文件不方便 所以远程连接

远程连接

FinalShell 远程连接工具 免费 (XShell 有个人和收费)

Java 写的 界面简陋

知道 Linux 系统的ip

ifconfig(Network Interface Config 简化版本的 命令 ipaddr)

启用网卡 配置

# tab 自动补齐
cd /etc/
cd sysconfig/
cd network-scripts/
vi ifcfg-ens33
# 修改内容如下
ONBOOT=yes

ins 编辑 esc :wq 保存退出

reboot 重启虚拟机(或者重启网卡systemctl restart network.service)

蓝屏可能VM工作站版本问题

ifconfig
# 查看动态ip

FinalShell 连接 管理器 SSH 连接

Linux 目录结构

image-20210723135847556

  • "/" : **根目录Linux文件系统的入口.也是最高级,最重要的的目录.**除衍生出其它目录,还和系统的开机,还原,系统修复有的,一般要求不要把任务应用程序直接放在根目录下,如果满了,可能就登录不了了(需要注意是否日志输出在根目录下)

  • "/bin":基本系统所需要的命令,主要是单用户模式下,还能执行的命令。主要有cat,mv,mkdir,cp,bash ,ls

  • "/boot":内核和加载内核所需要的文件.grub系统引导管理器也在这个目录下,存在/boot/grub/

  • "/dev":在linux系统下,任何设备及接口设备,都是以文件的形式存在,设备文件存储目录.像终端.磁盘等.比较重要的有/dev/null (crontab经常把不想输出输到这里);/dev/zero;/dev/tty;/dev/lp*;/dev/hd*;/dev/sd*

  • "/etc":系统的主要配置文件都放在这个目录下,一般来说,这个普通人是看不到这些文件的;这里最好也不要放可执行文件。常见的目录有如下:

    /etc/inittab ;

    /etc/init.d/;

    /etc/modprobe.conf ;

    /etc/X11/ ;

    /etc/fstab/ ;

    /etc/sysconfig/ ;

    /etc/init.d/开机启动脚本放在这里;

    /etc/xinetd.d/ super daemon启动脚本放在这里

    /etc/sysconfig/network-scripts/网管配置放在下面下

  • "/home":普通用户的目录默认存储目录.主文件夹有两种代号:

    ~ 代表这个用户的主目录

    ~dmtsai:代表 dmtsai的主文件夹

  • "/lib":库文件和内核模块存放目录.主要是开机用到,以及在/bin/;/sbin目录下命令会调用的库函数。/lib/modules会放内核相关的模块。

  • "/lib64":和/lib类似,主要是64的库函数

  • /usr 是存放可以分享与不可以动的内容,不是user的缩写,而是 UNIX Software Resource 的缩写,就是UNIX操作系统的软件资源

    主要子目录有:

    /usr/X**/ X Windows数据存在于此

    /usr/bin/ 绝大部分用户可用命令在此

    /usr/include/ C/C++等的头文件与包含文件在些。如果以源码的*.tar.gz安装软件时,可能会引用下面的文件

    /usr/lib/ 包含应用程序函数库及目标文件,以及不被一般用户惯用的执行文件或脚 本

    /usr/lib64/ 与/usr/lib/相似,会对64位的

    /usr/local/ 本机自己安装的的软件,建议安装到这里

    下面也有bin,etc,include,lib子目录,这些子目录功能大家可以想到

    /usr/sbin/ 非系统正常运行所需要的命令,最常见的就是网络服务器软件的daemon

    /usr/share/ 放共享文件的地方,基本是文本文件,可读的。子目录有

    /usr/share/man 在线帮助文件

    /usr/share/doc 软件杂项的说明文件

    /usr/share/zoneinfo 软件杂项的说明文件

    /usr/src 软件源码放在这里

  • "/media":即插即用设备的挂载点自动存放在这个目录下.像U盘,cdrom/dvd自动挂载后,就会在这个目录下.常见有/media/floppy,/media/cdrom

  • "/mnt":临时文件系统的挂载点目录.以前和/media一样,但有专门/media后,专门做临时挂载

  • "/opt":第三方软件的存放目录.什么叫第三方呢?像KDE,就是第三方的,只是集成到linux里,当然你可以放自己的东西到下面。

  • "/root":Linux超级权限用户root的根目录.单独存放,也方便在进入单用户模式的操作。

  • "/sbin":基本的系统维护命令,只能由超级用户使用.这些命令为开机、修复、还原系统过程所需要的。常见的命令有fdisk,fsck,ifconfig,init,mkfs

  • "/srv":存放一些服务器启动之后需要提取的数据.主要存放网络服务后的一些数据,如www,ftp

  • "/tmp":临时文件目录,这个目录任何人可以访问,有可能需要定期清理

  • "/usr":存放用户使用系统命令和应用程序等信息.像命令.帮助文件等.

  • "/var":存放经常变动的数据,像日志.邮件等.这个目录下的数据,需要定期清理,最好写个脚本,放在crontab里。

    常见的子目录:

    /var/cache/ 执行中的缓存文件

    /var/lib/ 软件本身执行的过程中,用到的数据。比如Mysql数据一般放在/var/lib/mysql/;而rpm数据则放在 /var/lib/rpm/

    /var/lock/ 资源被锁时,放在此。有些资源只能一个程序使用,比如刻录机。

    /var/log/ 系统日志存在地,有可能需要定时清理

    /var/mail/ 系统邮件,看情况需要定时清理

    /var/run/ 某些程序或服务启动后,PID放在下现

    /var/spool/放置队列数据, 看情况需要定时清理

  • “/lost+found” 是ext2/ext3文件系统才产生的,目的是当文件系统产生错误里,将一些丢失的片段防在这个目录下。

  • “/proc” 是一个虚拟文件系统。放置内存中的数据,当有一个进程启动时,就有一个文件夹。比较重要的/proc/meminfo,/proc/cpuinfo可以通过这两文件查看内存和CPU情况,当然还有/proc/dma,/proc/interrupts,/proc/ioports,/proc/net/*等

  • “/sys” 和/proc相似,也是虚拟文件系统,主要记录内核相关,比如内核模块,内核检测的硬件信息。

Linux 常用命令

1. 命令格式

命令的一般格式:command [options] [arguments]


说明:


  • command:命令名。
  • options:命令的选项,一般是一个单词或字母。有的命令有选项,有的命令没有选项。选项前面一般有“-”符号。选项是对命令参数的补充,当存在参数时才可能有选项。
  • arguments:命令的参数,有时候选项也带参数。有的命令有参数,有的命令没有参数。
  • []:方括号表示可有可无的意思。

2. 文件和目录操作命令

需掌握的常用命令:cd, ls, locate, less, grep, chmod, cp, mv, mkdir, rm。

  1. 链接

    • 软链接(相当于快捷方式)

    ln -s 源文件 目标文件

    • 硬链接

    ln 源文件 目标文件

    • 源文件被删除之后 硬链接文件依然有效 软链接文件失效
  2. pwd 命令:“print working directory”(打印工作目录)

  3. ls 命令:显示当前工作目录下的内容,包括子目录和文件

  4. ll 命令:当前目录下子目录和文件列表的详细信息

    显示的文件列表格式如下:

    drwxr-xr-x 3 user group 102 Mar11 22:56 Filename

    文件列表显示了7个段,每一段分别的含义说明如下:

    (1) 第1段,drwxr-xr-x,表示文件属性,

    第1个字母d表示这个是个目录,如果是“-”表示文件,l表示链接文件。

    d后面有9个字符,分成三组,每3个字符为一组。

    我们使用括号把他括起来:d(rwx)(r-x)(r-x)

    对应含意:文件类型(所有者权限)(组权限)(其他人 权限)。

    这三组分别说明的是:文件的所有者权限,文件所属的组权限,和“其他人”的权限。

    每一组中每一位字符的含意如下:

    第 1 位表示是否有读权限,有读权限,显示“r”,没有读权限,显示“-”。

    第 2 位表示是否有写权限,有写权限,显示“w”,没有写权限,显示“-”。

    第 3 位表示是否有执行权限,有执行权限,显示“x”,没有,显示“-”。

    d(rwx)(r-x)(r-x)含意说明:

    第 1 组 d:表示目录。

    第 2 组(rwx):表示文件所有者对这个文件的权限是,有读,写,执行权限。

    第 3 组(r-x):表示文件所属用 户组对这个文件的权限是:有读,没有写权限,有执行权限。

    第 4 组(r-x):表示 其他人对这个文件的权限是:有读,没有写权限,有执行权限。

    (2) 第2段,目录下的文件和子目录个数

    3表示目录下有3个文件或 目录 (注意:每个目录都有一个指向它本身的子目录"." 和指向它上级目录的子 目录"..")

    (3) 第 3 段,显示文件的所有者:user。

    (4) 第 4 段,显示文件所属用户组:group。

    (5) 第 5 段,文件大小:102 byte。

    (6) 第 6 段,修改时间:Mar11 22:56。

    (7) 第 7 段,文件名:Filename。

  5. cd 命令:改变工作目录

    几个常用 cd 用法:

    命令img功能
    cd tmp进入当前目录下的 tmp 目录。
    cd ~回到当前用户的 HOME 目录下。
    cd /回到整个系统的根目录。
    cd /etc进入到/etc 目录
    cd ..回到上一级目录。
  6. locate 命令:搜寻文件或目录

    locate命令要使用,需要先安装,安装命令:yum install mlocate(yum 到 linux 远程中央仓库下载)

    更新文件索引数据库,使用 updatedb 命令

    locate 有一个十分有用的选项 -r,它可以让你在搜索文件时使用正则表达式。

  7. find 命令:文件查找命令(不搜文件夹)

    其一般命令格式为:

    find 位置 -name 文件名称

    也可以根据文件大小(通过 -size n 选项指定,-n表示小于多少,+n表示大于多少)、时间(如 -atime n 表示查找 n 天前访问过的文件) 来搜索文件。

    此外,find 命令同样支持在搜索文件时使用正则表达式,你只需指定 -regex 选项即可。

    find 和 locate 命令的区别:locate 是在建立好的索引的基础上进行查找, 查找要快很多。find 功能强大,但它是直接在硬盘上搜寻,查找速度比较慢。

  8. clear 命令:用于清除终端窗口

  9. cat 命令:concatenate(连锁)的简写,意思是合并文件。该命令可以显示文件的内容(经常和 more 搭配使用),或者是将多个文件合并成一个文件

    cat 主要有三大功能:

    (1) 一次显示整个文件。cat filename


    (2) 从键盘创建一个文件。cat > filename << 结束符

    只能用于创建新文件,不能编辑已有文件。

    例如设置结束符为EOF

    cat > 1.txt << EOF

    编辑文件完后,只需在最后一行键入“EOF”,然后回车即可。

    (3)将几个文件合并为一个文件: cat file1 file2 > file


    参数:

    -n 或 --number 由 1 开始对所有输出的行数编号

    -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号

    -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

    -v 或 --show-nonprinting

  10. more 命令:浏览超过一页的文件。(分页)

在显示满一页时暂停,此时可按空格健继续显示下一个画面。

按 Q 键退出显示。

Enter键滚动显示下一行。

  1. less 命令:浏览超过一页的文件。(同more)

    所不同的是less 命令除了可以按空格键向下显示文件外

    还可以利用上下键来卷动文件。

    当需要结束浏览时,只要在 less 命令的提示符“:”下按 Q 键即可。

  2. head、tail 命令:文件浏览(看前/后多少行)

    例如:head/tail -10 xxx

  3. grep 命令:文件中查指定字符串(显示一行)

    grep 要查询的内容 文件名

  4. chmod 命令:改变文件或目录的访问权限

    chmod 权限数字 文件名

    由三位数字组成,每位数字求和,

    第 1 位数字代表文件所有者对这个文件的权限

    第 2 位 数字代表文件所属用户组对这个文件的权限

    第 3 位数字代表其他人对这个文件 的权限。

    权限属性对应的数字如下:

    权限属性对应数字说明
    r4文件可以被读取
    w2文件可以被写入
    x1文件可以被执行(如果它是程序的话)
    -0相应的权限还没有被授予。

    (符号加减也可以u、g、o、a、+、-、=、r、w、x)

    查看修改:ll

  5. chown 命令:改变文件的所有者

    命令格式:

    chown [-R] user[:group] file ...

    user : 新的档案拥有者的使用者 ID


    group : 新的档案拥有者的使用者群体(group)


    -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递归的方式 逐个变更)

  6. cp 命令:(copy)命令文件或目录复制到其他目录中

    命令格式:

    cp <源> <目标目录>

    拷贝目录(命令中需要使用-r 选项):

    cp -r <源目录名> <目标目录>

  7. scp 命令:远程复制,从本地到远程以及远程 到本地的文件传输操作

    类似网上邻居

    scp <源文件名> root@远程ip:/<目标目录>

  8. mv 命令:用于移动文件

    作用:剪切、重命名

  9. mkdir 命令:建立目录

  10. rm 命令:将文件或目录删除

    如果是链接文件,只是删除了该链接,原有文件保持不变

    如果要删除目录,命令如下:

    rm -r 目录

    选项说明
    -i互动。提示你确认删除。这个选项可以帮助你避免误删文件。
    -fForce,强制。代替互动模式,不提示地删除文件。除非 你知道自己在干什么,使用这个选项通常不是明智之举。
    -vVerbose,显示操作过程的详细信息。显示文件的删除进度。
    -rRecursive,递归。将会删除某个目录及其中所有的文件 和子目录。

3. 文件归档和压缩命令

需掌握的常用命令:tar,zip,unzip,gzip,gunzip。

  1. zip/unzip 命令:打包和压缩文件

    先安装 yum install zip unzip

    zip 命令用于打包和压缩文件。

    压缩例子:

    zip myfile.zip 目录/*

    解压例子:

    unzip myfile.zip

  2. gzip/gunzip 命令 :压缩/解开".gz"文件

    先安装 yum install gzip gunzip

    先打包、再压缩

    压缩:

    gzip usr.tar

    解压:

    gunzip usr.tar.gz

  3. tar 命令:文件打包

    打包例子:

    tar –cvf myfile.tar /tmp

    目录解包例子:

    tar –xvf myfile.tar

    如果一个压缩包是.tar.gz格式,则可以先通过gunzip解压,然后再通过 tar 解包。

    也可以通过tar命令直接解压解包,只需在解包加个参数 z

    如:

    tar -xzvf myfile.tar.gz tar

    选项说明
    -c建立新的归档文件
    -x从归档文件中解出文件
    -v处理过程中输出相关信息
    -f指定的文件名
    -z与-x 联用时调用 gzip 完成对 gz 文件 的解压

    linux常见压缩包格式:tar.gz

4. 系统管理命令

需掌握的常用命令:free, top, shutdown。

  1. free 命令:查看当前系统内存的使用情况

  2. shutdown 命令:用于关机

    -c 取消前一个shutdown 命令。

    -f<秒数> 送出警告信息和关机信号之间要延迟多少秒。

  3. reboot 命令:重启

  4. date 命令:日期

  5. cal 命令:日历

  6. top 命令:性能分析工具(ctrl+c/z可以退出)

5. 用户管理命令

需掌握的常用命令:useradd, passwd, su。

groupadd、groupdel、groups、useradd、userdel、passwd、usermod(修改用户组)、su(切换用户 超管切换不需要密码 ;切超管后需要exit两次回到最初登录用户)、who、whoami(当前登录)

6. 网络管理命令

需掌握的常用命令:ping, netstat, ftp,ssh, telnet, wget。

  1. **ping **
  2. wget (下载当前目录、需先安装)
  3. **ifconfig ipaddr **
  4. curl 访问页面 (本地测试、打开html代码)

7. 进程管理命令

常用命令:ps, kill。

  1. ps 命令:显示程序的状态

    命令常用选项:

    -a 显示所有用户的所有进程(包括其它用户)。

    -x 显示没有控制终端的进程,同时显示各个命令的具体路径。

    -u 按用户名和启动时间的顺序来显示进程。

    -aux 显示所有包含其他使用者的进程。

    ps -aux | grep ping (带 --color 的不算是查找本身)

  2. kill 命令:终止一个程序

kill <-数字> PID

PID 是指进程 ID。

SIG 信号对应数字说明
SIGINT2这个就是在 shell 下用 Ctrl+C 来结束一个程序时,发送的 信号,进程收到这个程序会结束。 你可以用 kill -INT pid 来发这个信号。
SIGQUIT3这个是在 shell 下用 Ctrl+\ 来结束程序时,发送的信号,
SIGKILL9这个信号之所以被称为“强杀”,就是因为无法改变进程收 到这个信号后所执行的动作,进程只能退出。 (前面说 的两个信号,虽然默认是退出,但是应用程序自己可以通 过 signal 系统调用来修改成其他动作,比如忽略那两个信 号等动作)。
SIGTERM15程序结束(terminate)信号, 与 SIGKILL 不同的是该信号可以 被阻塞和处理。通常用来要求程序自己正常退出

-9 是强杀

8. 服务管理命令

  1. systemctl 服务操作start/stop/restart xxx

Linux 软件安装与卸载

三种:绿色--免安装;yum--联网安装(远程中央、镜像库),位置不详;安装包--(下载源码,需要先编译在安装;下载是编译后的直接安装)

  1. FileZillas 使用(远程传输 基于FTP协议软件)

  2. 安装 jdk

    cd /etc vi profile 配置环境变量

    source profile 重启

    java version 测试

  3. 安装 tomcat

    解压即用 环境变量不用配置

    cd bin/

    ./startup.sh 启动(./ 是linux启动)

    ps -aux | grep tomcat 查看进程

    curl localhost:8080

  4. 安装 mysq7

    ......

软件安装

mysql 源码安装方式

安装gcc 源码编译

首先安装依赖包,避免在安装过程中出现问题

yum -y install gcc gcc-c++
yum -y install cmake
yum -y install ncurses-devel
yum -y install autoconf
yum -y install perl perl-devel

上面的依赖包安装也可以一行搞定

yum -y install gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel

创建mysql安装目录以及数据存放目录

mkdir /usr/app/software/mysql
mkdir /usr/app/software/mysql/data

创建用户、用户组

groupadd mysql
useradd -r -g mysql mysql

解压缩文件到当前文件夹

tar -zxvf mysql-5.6.35.tar.gz

安装解压 mysql 初始化 配置文件

cd mysql-5.6.35
cmake . -DCMAKE_INSTALL_PREFIX=/usr/app/software/mysql 
-DINSTALL_DATADIR=/usr/app/software/mysql/data 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=all 
-DENABLED_LOCAL_INFILE=1
make && make install

注意事项:

如安装失败重新编译时,需要清除旧的对象文件和缓存信息。

make clean
rm -f CMakeCache.txt
rm -rf /etc/my.cnf

设置目录权限

cd /usr/app/software/mysql
chown -R mysql:mysql .
chown -R mysql:mysql data

将mysql的启动服务添加到系统服务中

cd /usr/app/software/mysql
cp support-files/my-default.cnf /etc/my.cnf

创建基础表:

cd /usr/app/software/mysql
./scripts/mysql_install_db --user=mysql

配置环境变量

 vi /etc/profile
 #在最下面添加下面两个值
 export MYSQL_HOME=/usr/app/software/mysql
export PATH=$PATH:$MYSQL_HOME/bin
#然后保存

让修改的profile文件立即生效

source /etc/profile

将mysql加入到可控制启动的服务的文件夹内,并命名mysql,即service可控制的服务名,至此可用service mysql start控制启动mysql

cd /usr/app/software/mysql/
cp support-files/mysql.server /etc/init.d/mysql

让mysql服务加入到开机启动指令管理的服务列表中

chkconfig --add mysql

开机自启动mysql服务

chkconfig mysql on

现在可以使用下面的命令启动mysql

 service mysql start
 # 停止 stop 重启 restart

连接到mysql

mysql -u root

为root添加远程连接的能力

use mysql;
desc user;
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; //为root添加远程连接的能力。
update user set Password = password('xxxxxx') where User='root';
select Host,User,Password from user where User='root'; 
flush privileges;  //刷新权限
exit  //退出

开启防火墙mysql3306端口的外部访问

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重启防火墙

 firewall-cmd --reload

Shell 编程

  1. 简介

    Shell 是一个命令行解释器。向 linux 系统内核发送请求以便运行程序的界面系统级程序,shell 脚本 启动、挂起、停止,编写一些程序。

    运维、大数据 写 shell 脚本

  2. 编程案例

    1. 编写 shell 的格式规范
      • *.sh 命名
      • 开头为 #!/bin/bash 开头
      • 赋予用户执行的权限 +x(chmod +x 文件名)
      • 执行的时候 可以是相对路径或者是绝对路径
    2. 判断if、fi、循环分支等等

标题:Linux工具的学习
作者:HB2Ocean
地址:http://future-hb.top:8080/articles/2021/07/23/1627032745921.html