linux基础知识(基本认知、操作命令、常用技巧)

   日期:2020-08-07     浏览:155    评论:0    
核心提示:文章目录Linux基本认知容量大小自动补全命令或文件(夹)复用之前的命令Linux文件系统Linux中命令和执行程序长什么样子执行过的历史命令的记录文件的位置linux的隐藏文件Linux常用操作命令Linux系统信息查看linux基本命令(*命令行、简略版*)文件与目录权限上传下载解压windows压缩包命令管理文件校验用户管理用户组管理进程管理软件管理远程管理及会话保持linux常用技巧如何关机更改文件时间网络配置防火墙挂载光盘移动硬盘断电修改MAC地址文件编辑(vi编辑器)控制用户(组)使用sudo

文章目录

  • Linux基本认知
      • 容量大小
      • 自动补全命令或文件(夹)
      • 复用之前的命令
      • Linux文件系统
      • Linux中命令和执行程序长什么样子
      • 执行过的历史命令的记录文件的位置
      • linux的隐藏文件
  • Linux常用操作命令
      • Linux系统信息查看
      • linux基本命令(*命令行、简略版*
      • 文件与目录权限
      • 上传下载
      • 解压windows压缩包
      • 命令管理
      • 文件校验
      • 用户管理
      • 用户组管理
      • 进程管理
      • 软件管理
      • 远程管理及会话保持
  • linux常用技巧
      • 如何关机
      • 更改文件时间
      • 网络配置
      • 防火墙
      • 挂载光盘
      • 移动硬盘断电
      • 修改MAC地址
      • 文件编辑(vi编辑器)
      • 控制用户(组)使用sudo
      • sshd
      • 网站搭建
  • Docker Inrto
      • CentOS7下docker安装命令
        • 安装方式一:通过下载脚本安装
        • 安装方式二:通过安装包安装
      • 查看状态
      • 镜像
        • 镜像操作
        • 镜像加速
      • 容器
        • 容器操作
          • 创建容器
          • 启停容器
          • 进入容器
          • 删除容器
      • CentOS下`2233466866/lnmp`镜像的安装
        • 安装问题:

Linux基本认知

容量大小

bit(位)、Byte(字节,8位)、KB(2^10,千字节)、MB(兆字节)、GB(吉字节)、TB……

Gbit(吉比特)

自动补全命令或文件(夹)

TAB

复用之前的命令

上下键

Linux文件系统

/bin:是系统的一些指令。bin为binary的简写,主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/sbin:一般是指超级用户指令。主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr:
/usr/bin:是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/usr/sbin:放置一些用户安装的系统管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
/dev:任何设备均以文件形式存在于该文件夹内(通过mount命令挂载成用户直接可用的文件系统)
/media:挂载的可移动设备
/etc:配置文件所在目录
/proc:是一种内核和内核模块用来向进程(process) 发送信息的机制(所以叫做/proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中(on the fly) 改变设置(通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。
/tmp:临时文件,关机时自动销毁
/var:系统产生的不可自动销毁的缓存文件、日志记录。(系统和程序运行后产生的数据、不对外提供服务、只能用户手动清理)(包括mail、数据库文件、日志文件)

Linux中命令和执行程序长什么样子

.sh(shell脚本)

命令和执行程序可能是无扩展名的

执行过的历史命令的记录文件的位置

~/.bash_history

linux的隐藏文件

通过更改文件名来实现的(在文件名前添加.)

Linux常用操作命令

linux大致分为Debian系与RH(RedHat)系

Debian系:Ubuntu、kali…

RH系:CentOS…

Linux系统信息查看

查看主机名:hostname

查看机器型号:dmidecode | grep “Product Name” (RH系)

查看活动用户:w

查看用户登录日志:last

查看用户信息:id

查看本机ip:ip a

查看路由表:ip route

查看所有进程:ps -elf

实时查看进程:top

查看历史记录:cat .bash_history

查看发行版本

		cat /etc/issue
		cat /proc/version
		cat /etc/redhat-release

查看内核版本

        uname -a
        uname -r 查看核心版本
        uname -m 查看操作系统的位版本
        lsb_release -a

windows系统信息查看

查看主机名:whoami

查看用户信息:net user 用户名

查看路由表:route print

查看所有进程:tasklist

实时查看进程:taskmgr

linux基本命令(命令行、简略版

  • 屏幕清除

    clear(完全清除,无法向上翻页查看之前信息)

    ctrl+L(屏幕清除,开启新行,依旧可以向上翻页查看之前信息)

  • 查看系统时间

    date

  • 查看当前目录

    pwd

  • 切换目录

    cd 目录

    目录:

    ​ ~:登录用户的家目录(用户创建的初始目录)

    ​ ./:当前目录

    ​ …:上级目录

  • 列目录

    ls [选项] [文件]

    例:ls -lah

    解释:

    ​ -l:列出详细信息

    ​ -a:不隐藏任何项目

    ​ -h:人性化显示,文件大小可以已k单位显示

  • 新建目录

    mkdir 目录

  • 删除文件

    rm -rf 文件名

  • 改文件名

    mv [选项] 源文件 目标文件

  • 新建文件

    touch 文件

  • 复制文件

    cp [选项] 源文件 目标文件

  • 查看文件

    cat 正常文件查看

    tac 从最后一行开始显示

    nl 显示是会输出行号

    more less less可以往前翻页

    可翻页查看(只向后):more,按q停止

    可翻页查看(可向前或向后):less,按q停止

    head/tail 只看头几行/尾几行

    ​ tail -n 3 .bash_history

    ​ -n:选项

    ​ 3:参数

    od 二进制方式读取

    1. cat -A可以看到特殊字符

      nl -b a/t 不论是否空行都列出/空行不列出 -ln/rn/rz 行号左边/右边不加0/加0 -w 行号所占字符数

    2. od [-t TYPE] 文件
      选项或参数:
      -t :后面可以接各种 [类型(TYPE)」 的输出,例如:
      a:利用默认的字符来输出:
      c:使用ASCII 字符来输出
      d[size] :利用十进制(dec imal)来输出数据,每个整数占用size bytes ;
      f[size] :利用浮点数(floating)来输出数据, 每个数占用size bytes :
      o[size] :利用八进制(octal)来输出数据,每个整数占用size bytes ;
      x[size] :利用十六进制( hexadec imal )来输出数据,每个整数占用size bytes ;

    3. od -t oCc 文件 C可以比较文件不同编码输出

  • 搜索文件

    find、which、whereis

    which:查找PSATH环境变量中的可执行命令
    whereis:查找某个命令、其源码和帮助文件所在的位置
    find:全盘查找文件,支持正则匹配
    	find / -name “xxx.txt”	按名称查找
    	find . -mtime -1		查找1天内更改的文件
    	find . -ctime -1		查找1天内创建的文件
    
  • 更改文件权限

    chmod 权限更改 文件

    举例见文件与目录权限

  • 更改所有者

    chown user text.txt

  • 更改所属组

    chgrp user_grp text.txt

  • 待更新

文件与目录权限

权限位3位一组,第一位代表读权限,第二位代表写权限,第三位代表执行/进入权限。

第一组代表所属用户(u),第二组代表所属用户组(g),第三组代表其他组(o)的权限

比如

-rw-r–r-- 1 anyone anyone 0 7月 2 16:12 new.txt
drwx------ 6 root root 4.0K 7月 2 16:14 root

权限 文件 目录
r 读取文件内容 查询目录内容
w 编辑文件内容 修改目录内容
x 执行文件 进入目录

权限更改步骤:

  • 改变所属用户chown(应该首先改)

    ​ chown user text.txt

  • 改文件权限chmod

    ​ chmod 770 test.txt

    ​ chmod u+r test.txt

    ​ chmod u=rw test.txt

  • 改文件所属组

    chgrp user_grp text.txt

上传下载

yum install lrzsz -y

解压windows压缩包

yum install unzip -y

命令管理

设置别名

alias ll = "ls -lah"

文件校验

hash校验

md5sum filename

sha1sum filename

sha256sum filename

用户管理

增删改查:添加用户、删除用户、修改用户所属组、查询用户列表

  1. 添加用户:adduser

  2. 删除用户:userdel

  3. 修改用户所属组:usermod

  4. 查询用户列表:cat /etc/passwd

用户组管理

增删改查:添加用户组、删除用户组、修改用户组信息、查询用户组列表

显示当前用户所属组

  1. 添加用户组:groupadd

  2. 删除用户组:groupdel

  3. 修改用户组信息:groupmod

  4. 查询用户组列表:cat /etc/group

  5. 显示当前用户所属组:groups

进程管理

  • 查看进程

    ps -elf

    实时查看进程:top

  • 杀死进程

    kill pid

软件管理

RH系:yum

Debian系:apt

安装步骤:

​ RH系:

​ 更新软件包列表:sudo yum update

​ 安装软件:sudo yum install tmux

​ Debian系:

​ sudo apt update

​ sudo apt install tmux

远程管理及会话保持

  • 待更新

​ 文档:Tmux 入门教程.note

linux常用技巧

如何关机

在保证资料已经安全保存、程序正常退出的情况下进行关机。

物理机下:按一下电源键

虚拟机下:电源->关闭客户机

具备管理员权限,用户登录的情况下:输入

poweroff
shutdown
init 0

更改文件时间

touch [-acdmt] 文件
选项与参数:
-a:仅修订access time;
-c:仅修改文件的时间,若该文件不存在则不建立新文件:
-d:后面可以接欲修订的日期而不用目前的日期,也可以使用–date=“日期或时间”
-m :仅修改mtime
t:后面可以接欲修订的时间而不用目前的时间,格式为[YYYMMDDhhmm],不会修改ctime

Unix时间

指从1970-1-1 0:0:0 UTM开始到现在经历的秒数

网络配置

RH系和Debian系网络配置

  1. 确认能否上网

    查看ip:ip address

    判断能否上网:ping X.X.X.X

    启动网卡 ifup 网卡名

  2. 更改网络配置

    Debian系,以Kali为例:

    编辑网卡配置文件:sudo vi /etc/network/interfaces

    DHCP自动获取IP方式内容如下:

    auto eth0
    iface eth0 inet dhcp

    静态地址配置网络参数内容如下:

    auto eth0
    iface eth0 inet static
    address 192.168.3.90
    gateway 192.168.3.1
    netmask 255.255.255.0

    RH系, 以CentOS 7 为例:
    vi /etc/sysconfig/network-scripts/ifcfg-网卡名称

    对应行修改为:ONBOOT=yes

    默认配置内容:

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=6e549a87-a31f-4997-b524-e8d6c14a33c5
    DEVICE=ens33
    ONBOOT=yes

    静态配置IP:

    HWADDR=“00:15:5D:07:F1:02”
    TYPE=“Ethernet”
    BOOTPROTO=“static” #dhcp改为static
    DEFROUTE=“yes”
    PEERDNS=“yes”
    PEERROUTES=“yes”
    IPV4_FAILURE_FATAL=“no”
    IPV6INIT=“yes”
    IPV6_AUTOCONF=“yes”
    IPV6_DEFROUTE=“yes”
    IPV6_PEERDNS=“yes”
    IPV6_PEERROUTES=“yes”
    IPV6_FAILURE_FATAL=“no”
    NAME=“eth0”
    UUID=“bb3a302d-dc46-461a-881e-d46cafd0eb71”
    ONBOOT=“yes” #开机启用本配置
    IPADDR=192.168.7.106 #静态IP
    GATEWAY=192.168.7.1 #默认网关
    NETMASK=255.255.255.0 #子网掩码
    DNS1=192.168.7.1 #DNS 配置

  3. 重启网络服务

    /etc/init.d/networking restart

    ifup 网卡名:激活网卡
    netstat -r:查看路由表(Debian系)
    ip route:查看网关
    systemctl stop network:关闭网关(RH系)

    systemctl start networking(Debian系)

    systemctl start network:开启网关
    systemctl status network:查看状态(RH系)

防火墙

centos中如何利用iptables替代系统默认的firewall

yum install iptables-services   //安装iptables服务,如遇yum被锁,则执行rm -rf/var/run/yum.pid,是iptables-services,并非iptables
systemctl start iptables //启动iptables服务,是iptables,并非iptables-services
systemctl enble iptables //设置iptables服务开机启动
systemctl stop firewalld.service       //关闭firewalld
systemctl disable firewalld.service    //禁止firewalld开机启动
firewall-cmd --state    //查看firewalld运行状态

tips
service 服务名 start =等同于= systemctl start 模块类名
chkconfig 服务名 on systemctl enable 模块类名

挂载光盘

Ubuntu 用指令挂载CDROM 已经不用像以前那样,在 mount 的时候,要给一堆的参数才能挂载,现在,只要先用下面的这一行指令来找出 CDROM 的代码。

# 要用到管道操作符|
ls /dev | grep cdrom

然后,再直接用那个代码来挂载就可以了,例如用上面的指令找到的 CDROM 代码是 cdrom1,那就可以用下面的这一行指令;来把它挂载到 /media/cdrom 来使用。

sudo mount /dev/cdrom1 /media/cdrom

移动硬盘断电

待完善

hdparm

eject

sudo udisksctl unmount -b /dev/sdb1

udisksctl power-off -b /dev/sdb

修改MAC地址

临时修改

十六进制只能包含0-9,A-F

十六进制的10是指十进制的16

ifconfig eth0 down 
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 
ifconfig eth0 up   
然后重新启动主机。按照这种方法修改MAC地址,重新启动主机系统后,MAC地址会自动还原。

文件编辑(vi编辑器)

  • vi内实现左下上右移动(hjkl),行首行尾移动(^,$),断尾(G)
  • vi内实现命令模式及编辑模式转换(i,ESC)
  • 对字符、行进行增删改查(a, x, x->i, /查询的字符串->n-N; o, dd)
  • 选择字符:v->上下左右
  • 字符、行复制粘贴(y, p)
  • 撤销:u,恢复:ctrl+R
  • 保存::wq(保存并推出),:q!(强制退出)

控制用户(组)使用sudo

Linux中普通用户用sudo执行命令时报”xxx is not in the sudoers file.This incident will be reported”错误,解决方法就是在/etc/sudoers文件里给该用户添加权限。如下:

1.切换到root用户下
  方法为直接在命令行输入:su,然后输入密码(即你的登录密码,且密码默认不可见)。

2./etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是:
即执行操作:chmod u+w /etc/sudoers

3.编辑sudoers文件
即执行:vi /etc/sudoers
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)

ps:这里说下你可以sudoers添加下面四行中任意一条
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL

第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.

4.撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers

当然如果你理解上面的原理后,可以直接输入如下命令解决此问题

su -
echo 'xxx ALL=(ALL) ALL' >> /etc/sudoers  (其中xxx代表用户名,用上了重定向符) 

sshd

  1. 尝试连接

    windows下运行cmd

    ssh user@ip,比如ssh anyone@192.168.6.111

  2. 确认网络连接状态

    ping ip

  3. 确认服务器开启了ssh服务

    systemctl status ssh

  4. 重启ssh服务

    systemctl restart ssh

    systemctl start ssh

    systemctl [start|stop|status|enable|disable] ssh

    ​ enable/disable:自启动

    service ssh [start|stop]:旧版

  5. 检查配置

    配置文件位置:/etc/ssh/sshd_config

    要求:禁止管理员root用户通过ssh远程登录

    #PermitRootLogin prohibit-password
    

    更改为:

    # 添加谁什么时候改的的注释
    PermitRootLogin no
    
  6. 重启ssh服务

    Debian系:

    systemctl restart ssh

    RH系:(CentOS…)

    systemctl restart sshd

  7. 使用客户端连接

    下载xshell进行连接

tips:

第一次连接ssh验证指纹

查看ssh指纹

ssh-keygen -lf /etc/ssh/ssh_host_dsa_key
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key

网站搭建

Linux下网站环境的搭建(小皮面板)

步骤:

  • 登录https://www.xp.cn/linux.html查看帮助
  • CentOS中键入命令,一键安装
yum install -y wget && wget -O install.sh [https://download.xp.cn/install.sh && sh install.sh](https://download.xp.cn/install.sh && sh install.sh)
  • 根据安装后的提示登录管理界面,并将网站主目录上传
  • 浏览器键入正确的URL进行访问

Docker Inrto

Docker是一种虚拟化的解决方案,利用它能够实现多台计算机的模拟(虚拟Linux主机)。

Docker逃逸(属于虚拟化逃逸漏洞的范畴)

Windows、Linux平台上都可以搭建docker环境,但是强烈推荐在Linux上面构建docker环境,强烈反对在windows上面做。

CentOS7下docker安装命令

安装方式一:通过下载脚本安装

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh

安装方式二:通过安装包安装

CentOS7下离线安装包的安装三个文件:

  • 下载地址:安装包地址

  • 下载的文件:

    containerd.io-1.2.6-3.3.el7.x86_64.rpm
    docker-ce-cli-19.03.9-3.el7.x86_64.rpm
    docker-ce-19.03.9-3.el7.x86_64.rpm

利用rz命令将上述3个文件传入虚拟机

利用yum install 命令依次安装上述三个文件

通过docker version查看docker版本号

启动docker服务:systemctl start docker

查看状态

  • 查看docker版本

    docker version

  • 查看docker信息

    docker info

  • 查看已有镜像(/var/lib/docker目录下)

    docker images

  • 查看运行的容器

    docker psdocker container ls

    docker container ls -all

镜像

镜像操作

  • 查找镜像

    docker search mysql

  • 拉取镜像

    docker pull centos:latest

    执行docker pull centos会将Centos这个仓库下面的所有镜像下载到本地repository。

  • 删除镜像

    docker rmi docker.io/tomcat:7.0.77-jre7

    或者

    docker rmi b39c68b7af30

    docker rmi -f 镜像名

  • 运行镜像(参见创建容器)

    docker run image_name

  • 导出镜像

    docker save -o mysql.tar mysql

  • 导入Docker镜像
    docker load -i mysql.tar

  • 通过Dockerfile编译Docker镜像
    docker build -f Dockerfile -t xunfeng .

    -f Dockerfile选项及参数为默认,可以不用

    -t 指定生成的镜像名

镜像加速

  1. 配置加速器

    systemd 的系统(如Ubuntu16.04+、Debian8+、CentOS7+),编辑/etc/docker/daemon.json并写入:{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

    适用的加速器地址

    网易:https://hub-mirror.c.163.com/

    阿里云:https://<你的ID>.mirror.aliyuncs.com

    七牛云加速器:https://reg-mirror.qiniu.com

  2. 重启docker服务

  3. 验证生效

    执行docker info,检查Registry Mirrors对应内容,如:

    Registry Mirrors:
    https://reg-mirror.qiniu.com

容器

容器操作

创建容器

docker run -dit -p 80:80 -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name=lnmp 2233466866/lnmp

$ docker run -d -p 8000:80 -v /opt/data:/data ysrc/xunfeng:latest

把物理机的 /opt/data 挂载到容器的 /data 目录下, 访问: http://127.0.0.1:8000/ 正常访问则代表安装成功

tips:v->volume

启停容器
docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id
进入容器

!不建议使用sshd进入容器

有两种方式进入容器,attach方式进入后再退出会导致容器运行停止,而exec方式则不会。

多窗口用attach方式进入容器,多窗口内容同步,且容易存在单窗口阻塞所有窗口的问题。

docker attach container_name/container_id

docker exec -it 64604a87ee7c bash

docker exec -it lnmp /bin/bash

删除容器

docker rm container_name/container_id

CentOS下2233466866/lnmp镜像的安装

操作用户:ROOT

步骤:

  1. 恢复快照到初始状态

  2. 安装docker

    a) curl -fsSL https://get.docker.com -o get-docker.sh

    b) get-docker.sh

  3. 查看docker版本

    a) docker version

  4. 配置镜像加速器

    a) vi /etc/docker/daemon.json

    b) 写入{“registry-mirrors”:[“https://reg-mirror.qiniu.com/”]}

  5. 重启docker服务

    a) systemctl restart docker

  6. 验证是否生效,查看docker信息

    a) docker info

  7. 拉取镜像

    a) docker pull 2233466866/lnmp

  8. 查看已有镜像

    a) docker images

  9. 创建容器(此处遇到问题,见后

    a) docker run -dit -p 80:80 -v /home/www:/www --privileged=true --name=lnmp 2233466866/lnmp

  10. 查看运行容器(见图一

    a) docker ps

  11. 连接容器,进入/www目录

    a) docker exec -it lnmp /bin/bash

    b) cd /www

  12. 使用rz命令传输文件,使用unzip解压文件.zip文件

    a) yum install lrzsz

    b) rz

    c) 选择文件传输

    d) yum install unzip

    e) unzip 文件名(.zip)

    f) exit

  13. 查询CentOS系统IP地址(见图二

  14. 在浏览器中输入正确的URL访问(见图三

直接从客户机向docker容器中传输文件:

docker cp /home/文件 容器ID:/www

附件:
图一:

图二:

图三:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传]

安装问题:

问题:创建容器时显示IPv4转发被禁用,网络无法工作

解决办法

  1. 在宿主机上执行
    echo "net.ipv4.ip_forward=1" >> /usr/lib/sysctl.d/00-system.conf

  2. 查看是否更改

    tail -2 /usr/lib/sysctl.d/00-system.conf
    
  3. 重启networkdocker服务

    systemctl restart network && systemctl restart docker
    
  4. 重新创建容器

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服