Linux常见命令

Posted つ〆以往的誓言゛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常见命令相关的知识,希望对你有一定的参考价值。

一.虚拟机安装

1.安装环境

选择VMWare-->更改虚拟机安装位置-->预留至少30G的内存空间

2.安装虚拟机

1.安装

选择centos64位操作系统进行安装-->设置主机名称-->设置密码-->配置虚拟机:ifconfig查看网络信息,ping www.baidu.com 是否能访问外网

2.配置网络信息

(1).命令:cd /etc/sysconfig/network-scripts/

vi ifcfg-eth0

(2)按下"i"进入编辑模式

(3)进行修改IP地址,子掩码等等

DEVICE=eth0 TYPE=Ethernet ONBOOT=yes -->虚拟机/服务器启动的时候默认加载配置网络信息 BOOTPROTO=static -->静态设置网络信息;dhcp:动态获取网络信息 IPADDR=192.168.31.200-->设置当前机器在网络中的标识 NETMASK=255.255.255.0-->子网掩码;计算网关 GATEWAY=192.168.31.2-->默认网关 DNS1=114.114.114.114-->域名与IP地址的绑定

(4)删除原先生成的文件:rm -rf /etc/udev/rules.d/70-persistent-net.rule(该文件每次重新启动时会自动创建)

(5)重启网卡服务:service network restart

(6)防火墙

a.本次关闭:service iptables stop

b.查看防火墙状态:service iptables status

c.取消自动启动:chkconfig iptables off

(7)软件安装检测:执行该命令 vi /etc/selinux/config 进入文件之后将SELINUX修改为SELINUX=disabled

(8)快照应用:

a.作用:保存当前虚拟机的状态

b.拍摄快照必须关闭虚拟机

(9)克隆

a.作用:利用当前的状态制造出更多的虚拟机

b.修改相关数据:

修改地址vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改主机名vi /etc/sysconfig/network

删除IP与网卡绑定文件rm -rf /etc/udev/rules.d/70-persistent-net.rule

重启reboot

二.文件系统

1.文件夹的介绍

bin存放可执行的二进制文件

boot引导分区

dev设备信息

etc配置文件

home家目录 当前登录用户的地址

lib和lib64系统运行所需要的类库

lost+found当系统异常关闭的时候,保存的异常日志

media 多谋体

mnt可以挂载的存储设备

opt类似于program file软件安装目录

proc当前正在运行的进程(服务)

root超级用户家目录

sbin可执行文件

selinux安全

sys系统相关

tmp临时文件目录,当关闭计算机时目录数据回被清空

usr用户目录 一般用于yum安装软件

var变量

2.linux中的特殊符号

/根目录:

相对路径 vi ../etc/sysconfig/network

绝对路径 vi /etc/sysconfig/network

./当前目录

../上级目录

ll -a 查看当前路径下所有文件

~ 当前用户的家目录

cd 后面不加任何路径,跳转到家目录

$ 变量

3.文件中的相关命令

cd 切换文件目录

mkdir 创建目录

mkdir -p /a/b/c/d 在a目录下的b目录中的c目录里创建d目录

rmdir 只能删除目录并且是空目录

拷贝文件夹cp 源路径 目标路径

若不是空目录则用 cp -r 源路径 目标路径

剪切/移动 mv mv ~/install.log /opt

修改名字 mv 旧的文件夹名称 新的文件夹名称

删除文件和文件夹 rm -rf文件夹路径

查找目标文件 find 目标路径 -name 文件的名字

touch 如果存在这个文件,将三个时间修改为当前时间;如果不存在这个文件,创建新的

链接 类似于window的快捷方式

stat 查看文件状态 stat+文件名称

a.符号链接(软链接)

ln -s file01 sl01

ln -s /root/file01 sl02

软连接的inode和文件的inode不一样,是两个独立的文件

软连接的时候尽量使用绝对路径,防止链接文件夹拷贝时链接失效

b.硬链接

ln file02 hl01

硬链接的inode和文件的inode值一样,说明其实是一个文件

4.查看文件内容

cat 查看文档内容

more--less

分页查看文档内容 回车 下一行;空格 下一页;h 帮助;b 上一页;q 退出

head-数字 文件名称 从该文件头读取N行

tail-数字 文件名称 从该文件尾读取N行

5.vi编辑器

a.打开文件 vi+文件名 vi +数字 profile 打开之后光标停在该数字对应的行首

b.三种模式的转换

编辑模式--》输入模式

i 在当前字符位置前面插入数据

insert 插入

a 在当前字符位置后面追加数据 append追加

在下一行输入数据

打开一个空行 I 行首 A 行尾 O 上一行

输入模式--》编辑模式

按下 ESC即可

编辑模式--》末行模式

按下冒号 :

末行模式--》编辑模式

按下ESC即可

编辑模式的常见命令

w 调到下一个单词

^ 直接跳到行首

$直接跳到行尾

dw 删除一个单词或者特殊字符

dd 删除一行

3dd删除三行

u回滚

.回滚u的操作

yw复制一个单词

yy复制一行

3yw

p粘贴

3p 粘贴3行

r替换一个字符

3r 替换3个字符

x剪切

3x剪切3个

hjkl 左下上右

gg调到第一行

7gg 跳转到第7行

G最后一行

ZZ 保存退出

末行模式

w---保存

q---退出

wq--保存并退出

!--强制

nu

文档匹配

/if 搜索if

:s/for/fff/ 将光标所在行的第一个for换成fff

:s/for/fff/g 将光标所在行的所有for换成fff

:5s/for/fff/g 将第5行的for换成fff

:4,5s/for/fff/ 将第4行至第7行的for换成fff

g/hhh/s//www/g 将文中所有的hhh换成www

c.安装vim:yum install vim -y

6.文件的拷贝

a.linux和linux之间:scp 源文件 目标地址(用户@IP:文件目录)

scp ~/sxt root@192.168.31.201:~/

b.linux与window 安装组件 lrzsz

c.known_hosts

当一台主机与另外一台主机创建连接的时候,会在root目录下创建一个.ssh文件夹

文件夹下自动生成一个known_hosts的文件

这个文件存放了建立连接的主机地址信息

如果是第一次建立连接,需要输入yes确认

如果第二次连接,因为known_hosts这个文件中已经存放了主机地址,那么就不需要输入yes了

7.分区信息

df 查看分区的使用情况 df -m df -h(更直观,更简洁)

8.网络系统

1.ifconfig

查看当前网络相关信息

eth0

网卡1的网络配置

lo

环网的网络配置

ping

查看与目标主机是否连通

dns域名解析

www.baidu.com

192.168.1.120

window

C:\\Windows\\System32\\drivers\\etc\\hosts

Linux

vi /etc/hosts

2.netstat

当前网络信息

netstat -anp

netstat -r 核心路由表

3.telnet

查看与目标主机的端口是否能够连通

yum install telnet -y

telnet 192.168.31.201 6789

连接不同说明对方防火墙屏蔽或者没有监听

telnet 192.168.31.201 22

退出按下 ctrl+]

输入quit 退出

http请求

curl -X GET http://www.baidu.com/

9.免密钥登录

为了远程登录和拷贝文件,其他程序可以控制我的电脑更加方便,所以需要免秘钥

远程登录

ssh 192.168.31.201

秘钥的分类

对称加密算法 :加密和解密使用相同的秘钥(AES DES)

原文 我喜欢你

秘钥 www.shsxt.com

加密后 U2FsdGVkX18AVEi36COkz94Mbr/2cFAFgnm8pLiZ4q4=

解密 我喜欢你

非对称加密算法 (RSA)

加密和解密的秘钥不一样

加密的秘钥称之为 公钥,解密的秘钥称之为私钥 ,公钥和私钥成对出现

加密前首先求出公钥和私钥

  • -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC56tcVRzoS6fsnGpcvN4kD2ibY
    8I99Wut1eEOHrJDgtCGa+cus3LjXWBHi/BTziuTdzaE+ekNcmLO1y54Rtv4VZ+5k
    DDPRhp30u0CWnQhRQcChTUFcaeve1UNVrVp0j+xUZWY1Ndqb+K+btQS9aIBJHOQD
    B0u9CJWP9RZZcjIRYQIDAQAB
    -----END PUBLIC KEY-----

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQInKuXto6twRUCAggA
    MBQGCCqGSIb3DQMHBAjKJESHtPWfSASCAoDvBi4aU8HFdTqfyy3ItbGSGjexA8un
    T4fg4fWgWdm6KJWg0l2bap1wagfjeEKdznKDNFqrveK5SSsozPx5Nnr/9IblSCiA
    yF0NA1aYI3Bzi2Coy5Br+mq+BxpfmW0qoqKznhKcbW+SK3mPVPCTwD59Mnq9ufqG
    oxNkPnSycKEfoy4iZXEpkXH/Gkqp4HZMGrKVZUN7RY3CEDJNjqKrAgVo4ODiBCZ+
    HOSgLZe8yTEANeZxApUGA92rOjWSVgecaNgG0Jz/uIWUmqdnv0xYBNnBCk9tcl1G
    K+u9UL2YzeCML/mMGnEMSoNc11DV/AuCno9c8EtgG8r0ao3I7liDmthhvexaC6dq
    lySEnLztBeL4kgll9pLqaE323gNfB/LMV0zuUa/o4MKVLswupflwUvJvJOG8zejs
    X1mAoBY1j96k++ikXHd5+/uWKW5KybzUMNNS4GIPoDRYQaifLlNt0S9NnvtYaxjP
    Ib74CF0L5HfAGuU4FjnlBJj/ajdNY27tGVJiHe0oL2kfEaNnenZYA/gwZ/rnq4wF
    jMijB7SbU0lUFVLVzNfdGVrbo1+KhQ/AU/ZUPxUy6mK9wDbd3aHTDYbnbeWoGIB9
    YzQBRFAwMtk66NF15rI0/jsIzlAf1tcmHae7WEeqMNbwGEZD0hGYPsmHYxAC/tob
    BKhlGtr6SjrjnwZmZkNXsmlJcZhcYJQQWRTzQAJ6y1u/bCGnZ2T5IaqLagQ7GPzY
    X/zoQ9Rtw55ZiVQB7r/y9W/dqwQrDDPkspjQoJM2Ayjv4SfCEaItNG/0AGdHKA1G
    mkWU4+JhKM9zx7QRzuXMImUmvtYyrS23S8h9lUV+P9fAFX5NHF2o1FrK
    -----END ENCRYPTED PRIVATE KEY-----
  • 原文:我喜欢你
    公钥加密:
    U71Pt4qXUro+NQ2TIUbqdVVX/YAGXTpdGJYnC+ypoAgAX5RRSVMmbXL36voxIWFb6ryONSA9DKSy8Cg+y01l0pvCO5zbwaCxBpflQ5MJOIAJ3fTgbxx8Dxk0duK5pv/2eT1ePQTHMxMeWHNAtOYSBySLj3kGPQegwkUWx+NWQls=
    私钥解密:我喜欢你

不可逆加密算法

将密码加密后编程一个新的数据,但是这个过程不可逆

7+8=15

6+9=15

15=?+?

15=?+?+?+...+?

开始进行免秘钥

生成自己的秘钥

ssh-keygen -t rsa -P \'\' -f ~/.ssh/id_rsa

将自己的公钥发送给要免秘钥的主机的.ssh/authorized_keys文件中

ssh-copy-id root@192.168.31.201 ~/.ssh/id_rsa.pub

我将自己的公钥发给你,说明我登录你是免秘钥的

为了保证免秘钥成功

known_hosts文件要有对方主机名

保证对方的authorized_keys 要有我的公钥

三,系统配置

1.日期和时间

date 查看当前系统时间

修改系统时间 date -s

服务器时间同步

安装ntp时间同步服务器

yum install ntp -y

ntpdate cn.ntp.org.cn

2.DNS解析

/etc/hosts

3.主机名

/etc/sysconfig/network

4.防火墙

service iptables stop

chkconfig iptables off

5.SELinux

/etc/selinux/config

四,用户和权限

1.用户和组

  • 创建用户 useradd 用户名

用户存在的地址 /etc/passwd

  • 设置密码 passwd 用户名

    输入密码:例如 123456

    密码存在的地址:/etc/shadow

2.系统权限

-rw-r--r--. 1 root root 1615 May 4 2010 rpc

drwxr-xr-x. 2 root root 4096 Sep 2 22:39 rpm

lrwxrwxrwx. 1 root root 14 Sep 2 22:39 redhat-release -> centos-release

前缀为"-"的代表文件

前缀为"d"的代表目录

前缀为"l"的代表的是软连接

rwx三个为一组

r:读的权限

w:写的权限

x:执行的权限

rwx一共有三组

所属用户的权限

所属用户的组

其他的权限

root root 所属的用户名为root 所属的组为root

3.权限和UGO

-bash: /usr/sbin/groupadd: Permission denied

当前用户没有执行权限

权限在超级用户的面前就是一堆废纸,没有任何约束作用

4.修改文件权限

修改用户和组 chown 用户名称 文件名称

修改组 chgrp 旧的组名 新的组名

修改UGO的权限

chmod(ugo)+/-(rwx) 文件名 适合统一添加

注意:"+"代表添加权限;"-"代表删除权限

chmod(0-7)(0-7)(0-7) 文件名称

5.sudo

权限分配文件

/etc/sudoers文件

需要使用vi sudo命令来修改这个文件

在98行位置添加 yw ALL=(root) /usr/sbin/*

使用权限的时候 sudo useradd wby ,第一次需要输入密码

这个密码有效期为15分钟

6.进程proc

ps -ef 查看当前进程

ps -aux 查看当前用户的详细信息

top 实时查看当前linux的运行情况

kill -9 进程号 杀死进程

7.重定向

重定向就是指数据输出的方向,默认输出到控制台

输出种类: 1标准输出 2错误输出,默认的输出种类为1 标准输出

ls ~ /abcd 1>> info

ls ~ /abcd 2>> info

ls ~ /abcd >> info 2>&1

8.管道

将前面的命令得到的结果传递给后面的命令

ping www.baidu.com >> baidu

ping www.baidu.com >> baidu &

ps -ef | grep ping

jobs -l 只能查看当前终端的

后台程序不会被挂起,但是需要重定向两种输出方式

nohup ping www.baidu.com >> baidu01 2>&1 &

五.程序的安装

1.全局配置文件

文件修改地址:/etc/profile

2.软件安装

rpm -ivh 要安装的软件名称

解压tar.gz tar -zxvf 需要解压的文件名称

打包文件 tar -zcf 需要打包的文件名称

3.安装jdk

rpm -ivh jdk

配置环境变量

vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$JAVA_HOME/bin:$PATH

注意:在profile文件下可以查看当前jdk安装路径 :cd usr/java/jdk1.7.0_67

重新加载环境变量配置文件

source /etc/profile

4.安装Tomcat

解压安装包 tar -zxvf apache-tomcat-7.0.61.tar.gz

新建安装路径 mkdir /opt/sxt

将解压后的文件移到新建安装路径下 mv apache-tomcat /opt/sxt/

切换到bin目录中 并启动服务 ./startup.sh

5.安装mysql

安装MySQL yum install mysql-server -y

注意: 是mysql-server 不是mysql

启动MySQL服务 service mysqld start

连接 mysql

查看当前的数据库 show databases;

注意:不要忘记分号

进入数据库 use mysql;

查看数据库表user的信息 select host,user,password from user;

添加管理员账户

grant all privileges on *.* to \'root\'@\'%\' identified by \'123456\' with grant option;

刷新权限 flush privileges;

注意:如果还是登陆不进去,请强制刷新 service mysqld restart

删除已有的用户名称和密码

delete from user where host <> \'%\';

注意:如果还是能免密登陆 请输入 commit;

退出 exit

重新登录 mysql -u root -p

输入密码 xxxxx

使用Navicat连接数据库

6.yum安装

就是一个基于rmp包的包管理器,他可以帮助我们从包服务器查询 安装 卸载 更新 依赖。。。一系列操作

yum search xxx

yum install xxx1, xxx2 -y

yum deplist mysql-server.x86_64

修改yum源

(1)基于网络

安装wget yum install wget -y

备份原来的ContOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载ContOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

清除原始yum源的缓存信息 yum clean all

生成新的yum缓存 yum makecache

(2)基于本地文件

将完整版的ISO文件加入到光驱

将光盘挂载到机器上 mount /dev/cdrom /mnt/cdrom/

修改ContOS-Base.repo的名字

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.aliyun

修改ContOS-Media.repo

vi ContOS-Media.repo

baseurl=file:///mnt/cdrom/
enabled=1

清除原始yum源的缓存信息 yum clean all

生成新的yum缓存 yum makecache

六,shell编程

1.Kernel 内核

Linux-Linux

Window-NT

2.shell

Bourne Shell(sh)

Bourne Again Shell(bash)

注意:将来写脚本的时候先搞清楚系统是什么壳。然后再声明对应的壳

3.创建shell

vi sxt.sh

#!/bin/bash

注意: #!声明shell

4.运行脚本

(1) source sxt.sh

sh sxt.sh

可以直接执行普通文件

但是只能执行比较原始的shell命令

(2) ./sxt.sh

必须是一个可执行的文件

执行脚本的时候,新开一个子进程执行

5.变量

在shell中没有数据类型

export 可以让子进程使用父进程的变量

6.传参

echo $1

注意:pwd`将``中的内容当做命令去执行后然后使用

7.逻辑运算符

&&逻辑与

前后都为true,才会返回true

如果前面是false,后面的表达式将不会被执行

ls /root && ls /opt

||短路或

前后只要有一个为true,就会返回true

如果前面额表单式为true,后面的就不执行了

ls /root || ls /opt

8.流程语句--函数

首先当电源键被按下的时候,首先启动的是Bios

BIOS会检测启动系统的方式(U盘,光驱,硬盘)

Linux会默认加载boot的文件夹引导系统启动,读取默认的配置信息

读取/etc/inittab选择当前系统的运行级别

0:halt关机

1单用户模式

2多用户模式但是没有nfs

3完全的多用户模式

4保留选项

5X11桌面系统

6reboot重启

默认级别为:3

根据级别选择对应的rc3.d

里面都是软连接,软连接链接到了init.d文件夹中的服务

所有以S开头的表示启动时要加载的服务

所有以K开头的表示关机时要杀死的服务

字母后面的数字表示顺序

然后关机rc0或者重启rc6

9.服务管理

chkconfig

检查开机关机的时候服务是否被开启或者关闭

on off (2345)

service

当前运行状态下,服务的开启和关闭

start stop restart status

将脚本添加到服务

创建一个脚本文件

#!/bin/sh
#chkconfig: 2345 88 99
#description:auto_run

ntpdate cn.ntp.org.cn >> /var/sxtlog 2>&1

修改脚本文件的权限

chmod 774 sxtntpdate.sh

将脚本文件拷贝到/etc/init.d文件夹下

将脚本加入到系统服务

chkconfig --add sxtntpdate.sh

在rcX.d中自动创建软链接

重启服务器

 

10.linux三剑客

grep

全面搜索正则表达式并把行打印出来

cat passwd | grep -n root

grep -n root passwd

grep -nv root passwd

grep -En [0-9]{3} passwd

grep -ni Root passwd

grep "no login" passwd

grep 74 38 passwd

grep 38 passwd --color=auto

o 选中部分 c统计行数

grep text ./ -rn

sed

https://www.cnblogs.com/chensiqiqi/p/6382080.html

Stream Editor(字符流编辑器)

文件中的每行字符都是原料,运到sed车间,然后经过一系列的加工处理

一次一行的设计使得sed软件性能很高,sed在读取非常庞大的文件时不会出现卡顿的想象。

  • 对行的操作

    • 10第十行

    • 10,20 [10-20]

    • 10,+20--->[10,10+20]

    • 10,$ --->[10,最后一行]

    • 1~2--->1357

    • 操作指令为a追加和i插入

    • sed "2a shsxt" passwd

    • sed "2i shsxt" passwd

    • sed -i "2a shsxt" passwd

    • d

    • c

    • s

    • sed "1,3s/root/sxt/g" passwd

    • p

    • sed -n "2p" passwd

awk

https://www.cnblogs.com/chensiqiqi/p/6481647.html

  • awk指令是由模式,动作,或者模式和动作的组合组成。

    • 模式:匹配数据

    • 动作:让匹配的数据执行的操作

    • awk -F ":" \'NR>=2 && NR<=6{print NR,$1}\' passwd

    • awk -F ":" \'NR==1{print NR,$1}NR==2{print NR,$NF}\' passwd

以上是关于Linux常见命令的主要内容,如果未能解决你的问题,请参考以下文章

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

linux中怎么查看mysql数据库版本

Alfred常见使用

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

Linux-常见命令