Linux常用命令

认识Linux之前,首先要了解它的目录结构的构成

目录结构

  • /bin是binaries(二进制文件)的缩写,这个目录存放的是最常使用的命令。

  • /boot 存放的是启动Linux时的一些核心文件,包括一些链接文件和镜像文件

  • /dev 是device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式与访问文件的方式是一样的。

  • /etc 是etcetera(等等)的缩写,存放的是所有的系统管理所需要的配置文件和子目录。

  • /home 用户的主目录,Linux中,每个用户都会有一个自己的目录,一般目录名是以自己的账号名命名的。

  • /lib 是library(库)的缩写,存放着系统最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found ,这个目录一般是空的,当系统非法关机后,这里就存放了一些文件。

  • /media ,Linux系统会自动识别一些设备,例如光驱,u盘等,识别后,Linux会把识别的设备挂载到这个目录下。

  • /mnt ,系统提供该目录是为了让用户临时挂载别的文件系统的,可以将光驱挂载在/mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt 是optional(选项)的缩写,这给主机额外安装软件所摆放的目录。

  • /proc 是processes(进程)的缩写, /proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

  • /root , 该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin , s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

  • /selinux , 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv , 该目录存放一些服务启动之后需要提取的数据。

  • /sys ,这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin , 系统用户使用的应用程序。

  • /usr/sbin , 超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src , 内核源代码默认的放置目录。

  • /var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

用户 

Linux中的每个用户都在 /etc/passwd 文件中有一个对应的记录行,它记录了用户的一些基本属性,/etc/passwd文件是所有用户都可以读的。

 /etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下 :

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow文件 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group存放用户组的所有信息

组名:口令:组标识号:组内用户列表

 添加新的用户账号

useradd 选项 用户名
# 选项
    # -c 指定一段注释描述
    # -d 指定用户主目录,如果该目录不存在,则可以用 -m参数同时创建主目录
    # -g 指定用户所属的用户组
    # -G 指定用户所属的附加组
    # -s 指定用户的登录shell,例如:/bin/bash
    # -u 指定用户的用户号,如果同时有-o,可以重复使用其他用户的标识号

# 实例:
# 此命令创建了一个用户he,其中-d和-m选项用来为登录名he产生一个主目录 /home/he(/home为默认的用户主目录所在的父目录)。
useradd –d  /home/he -m he

 删除账号

userdel 选项 用户名
# 常用的选项是 -r,它的作用是把用户的主目录一起删除
# 实例
userdel -r he

 修改账号

usermod 选项 用户名
# 常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

# 实例
# 此命令将用户he的登录Shell修改为sh,主目录改为/home/she,用户组改为test
usermod -s /bin/sh -d /home/she -g test he

 用户口令管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

passwd 选项 用户名
# 选项
	# -l 锁定口令,即禁用账号
	# -u 口令解锁
	# -d 使账号无口令
	# -f 强制用户下次登录时修改口令

 进程

netstat -alnp | grep 端口号 -----可以查询端口被占用进程

nohup java -jar server-client.jar 127.0.0.1 9696 >client_logs.log 2>&1 &

nohup java -jar xxx.jar 127.0.0.1 >xxx.log 2>&1 & 后台运行并生成对应日志文件

java -jar XXX.jar &
  • 命令结尾没有 “&” ,则变成 “java -jar XXX.jar ” ,表示在当前ssh窗口,可按CTRL + C打断程序运行,或者直接关闭窗口,则程序直接退出

  • 命令结尾添加 “&” ,则变成 “java -jar XXX.jar &” ,表示在当窗口关闭时,程序才会中止运行。&代表让该命令在后台执行。

nohup java -jar XXX.jar > Log.log & 
或者
nohup java -jar XXX.jar >> Log.log & 
  • 命令 "nohup java -jar XXX.jar &" 部分,表示不挂断运行命令,当账户退出或终端关闭时,程序仍然运行。注意,该作业的所有输出被重定向到nohup.out的文件中。

  • 命令 "nohup java -jar XXX.jar > Log.log &" 部分,表示不挂断运行命令,当账户退出或终端关闭时,程序仍然运行,并且该作业的所有输出被重定向到Log.log的文件中。“ > Log.log ” 该命令就是指定日志输出的文件。

  • ">>"表示将输出以追加的方式重定向到Log.log中。

nohup java -jar XXX.jar > Log.log 2>&1 & 
或者
nohup java -jar XXX.jar >> Log.log 2>&1 & 
或者
nohup java -jar XXX.jar > /dev/null 2>&1 & 
  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。

  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。

  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

  • 屏蔽输出,起到禁止输出作用:/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。

  • “> Log.log 2>&1” :表示将 stdout 和 stderr 合并后重定向到 Log.log。

  • 重定向: nohup ./execute.sh > /home/xxx/log.log 2>&1 & :这样日志会重定向到指定目录下

kill -9 pid 杀死进程

ps -ef |grep

ps命令将某个进程显示出来 ;

grep命令是查找 ;

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户

中间的|是管道命令 是指ps命令与grep同时执行 ;

& 最经常被用到:这个用在一个命令的最后,可以把这个命令放到后台执行

jobs 查看当前有多少在后台运行的命令

fg 将后台中的命令调至前台继续运行

bg 将一个在后台暂停的命令,变成继续执行

 解压

解压/压缩命令

tar -zcvf xxx.tar.gz /xx # 打包成tar.gz格式压缩包
tar -zxvf xxx.tar.gz # 解压tar.gz格式压缩包
tar -zxvf xxx.tar.gz -C /xx # 解压到指定目录 例如:tar -zxvf apache-tomcat-8.5.57.tar.gz -C /home/tomcat/
tar -jcvf xxx.tar.bz2 /xx # 打包成tar.bz2格式压缩包
tar jxvf xxx.tar.bz2 # 解压tar.bz2格式的压缩包
zip -q -r xxx.zip xx/ # 压缩成zip格式
unzip xxx.zip # 解压zip格式的压缩包
# xxx.tar.xz解压 分两步解压
xz -d xxx.tar.xz
tar -xvf xxx.tar.xz
# 也可以直接解压
tar -xvJf xxx.tar.xz

防火墙

# 查看防火墙状态
systemctl status firewalld
# 开启、重启、关闭firewalld.service服务
service firewalld start    # 开启
service firewalld restart  # 重启
service firewalld stop     # 关闭
# 查看防火墙规则
firewall-cmd --list-all   # 查看全部信息
firewall-cmd --list-ports # 查看端口信息
# 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent #开端口命令
systemctl restart firewalld.service #重启防火墙

# 命令含义
--zone # 作用域
--add-port=80/tcp # 添加端口,格式为:端口/通讯协议
--permanent # 永久生效,没有此参数重启后失效

 硬链接与软链接

硬链接:  A--B,假设B是A的硬链接,那么它们指向的是同一个文件。允许一个文件有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删。

软链接:类似windows下的桌面快捷方式,删除了源文件,快捷方式也访问不了。

# 创建文件
touch f1
# 创建硬链接
ln f1 f2
# 创建软链接
ln -s f1 f2
# 向f1里面输入内容
echo "something for nothing" >> f1

文件内容查看

  • cat由第一行开始显示文件内容

  • tac 从最后一行开始显示

  • nl 显示的时候输出行号

  • more 一页页的显示文件内容(空格键代表翻页,enter键代表下一页,:f 行号)

  • less 与more类似,但是它可以往前翻页(空格代表翻页,上下键代表翻动页面,q命令退出,查找字符串:/要查找的字符向下查询,?要查找的字符向上查询,n继续查询下一个,N向上寻找)

  • head 只看头几行(通过-n 行数参数来控制显示几行)

  • tail 只看末尾几行 (通过-n 行数参数来控制显示几行)

  • df -lh 查看硬盘空间大小

可以使用man [命令] 来查看各个命令的使用文档,如:man ps。

Centos7网络配置目录:/etc/sysconfig/network-scripts

ifconfig命令查看网络配置

 文件基本属性

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d则是目录

  • 当为 - 则是文件;

  • 若是 l 则表示为链接文档(link file);

  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);

  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。

从左至右用 0-9 这些数字来表示。

0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。

4-6 位确定属组(所有者的同组用户)拥有该文件的权限,第 7-9 位确定了其他用户拥有该文件的权限。。

其中 1、4、7 位表示读权限,如果用 r 表示,则有读权限,如果用 - 表示,则没有读权限。

2、5、8 位表示写权限,如果用 w 表示,则有写权限,如果用 - 表示,则没有写权限。

3、6、9 位表示可执行权限,如果 用 x 表示,则有执行权限,如果用 - 表示,则没有执行权限。

更改文件属性 :

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个。分别是 owner/group/others(拥有者/组/其他),三种身份有各自自己的 read/write/execute 权限。

先复习一下刚刚上面提到的数据,文件的权限字符为: -rwxrwxrwx,这九个权限是三个为一组的。其中,我们可以用数字来代表各个权限,各个权限的分数对照表如下:

  • r:4

  • w:2

  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

  • owner = rwx = 4+2+1 = 7

  • group = rwx = 4+2+1 = 7

  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770

# 更改文件属组 
# -R:递归更改文件属组,就是在更改某个目录文件的属组时,加上参数-R的参数,该目录下的所有文件的属组都会更改
chgrp [-R] 属组名 文件名
# 更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
# 更改文件权限
chmod [-R] xyz 文件或目录
# xyz:即为rwx属性数值相加
# -R:进行递归的持续变更,即连同子目录下的所有文件都会变更

 目录管理

  • 绝对路径:由根目录/写起,例如:/usr/local

  • 相对路径:不是由/写起,例如要从usr/local/bin/usr/local/lib时,可以写成:cd ../lib,这就是相对路径的写法

常见的处理目录的命令:

  • ls(英文全拼:list files): 列出目录及文件名

  • cd(英文全拼:change directory):切换目录

  • pwd(英文全拼:print work directory):显示目前的目录

  • mkdir(英文全拼:make directory):创建一个新的目录

  • rmdir(英文全拼:remove directory):删除一个空的目录

  • cp(英文全拼:copy file): 复制文件或目录

  • rm(英文全拼:remove): 删除文件或目录

  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

# 列出目录
# -a:全部的文件,包括隐藏文件;-d:仅列出目录本身,而不是目录内的文件内容;-l:长数据串列出,包含文件的属性与权限等
ls 
# 切换目录
cd [相对路径或绝对路径]
# 显示当前所在的目录
# -P:显示出真实路径而不是使用链接路径
pwd [-P]

[root@www ~]# cd /var/mail   <==注意,/var/mail是一个连结档
[root@www mail]# pwd
/var/mail         <==列出目前的工作目录
[root@www mail]# pwd -P
/var/spool/mail   <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail 
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!

# 创建新目录
# -m :配置文件的权限;-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来
mkdir [-mp] 目录名
mkdir -m 711 test0
mkdir -p test1/test2/test3/test4

# 删除空目录
rmdir [-p] 目录名称
rmdir -p test1/test2/test3/test4
# -p :连同上一级『空的』目录也一起删除

# 复制文件或目录
# -d:若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
# -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
# -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
# -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
# -r:递归持续复制,用於目录的复制行为;(常用)
cp

#移除文件或目录
# -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息
# -i :互动模式,在删除前会询问使用者是否动作
# -r :递归删除
rm [-fir] 文件或目录

# 移动文件或修改名称
# -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
# -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
# -u :若目标文件已经存在,且 目标文件 比较新,才会升级
mv [-fiu] 需要移动的文件 目标文件
mv mvtest mvtest2 # 将mvtest文件改为mvtest2

MySQL常用命令

开启和关闭 

# 开启
service mysql start
# 关闭
service mysq stop
# 重启
service mysq restart

登录

# 明文登录
# 语法 mysql -u 用户名 -p 密码
mysql -u root -p 123456
# 密文登录
# 语法 mysql -u 用户名 -p
mysql -u root -p

修改密码 

# set password 命令(需登录)
# 语法 set password for 用户名@localhost=password('新密码');
set password for root@localhost=password('123456a');
# mysqladmin命令,密文(不需要登录)
# 语法 mysqladmin -u 用户名 -p 旧密码 password+回车,输入两次新密码
mysqladmin -u root -p 123456 password
# mysqladmin命令,明文(不需要登录)
# 语法 mysqladmin -u root -p 旧密码 password 新密码
mysqladmin -u root -p 123456 password 123456a

常规操作(登录后)

show databases; # 显示数据库列表
use mysql; show tables; # 显示指定数据库中的表
describe user; # 显示user表的表结构 

导入、导出数据库(不需要登录)

# 导出所有数据库
mysqldump -u root -p 123456 --all-databases >/home/sqldump/all.sql
# 导出指定数据库
mysqldump -u root -p 123456 --databases test >/home/sqldump/test.sql
# 导出指定数据库的结构,无数据
mysqldump -u root -p 123456 --no-data --databases test >/home/sqldump/nodata_test.sql
# 导出指定数据库中的指定表
mysqldump -u root -p 123456 --databases test --tables user >/home/sqldump/user.sql
# 导出指定数据库中的指定表,设置查询条件
mysqldump -u root -p 123456 --databases test --tables user --where='user_id=1'>/home/sqldump/user.sql
# 通过sql文件导入数据库
mysql -u root -p 123456 < home/sql/test.sql

用户授权

# 授权
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 刷新
mysql> flush privileges;

all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。

on:表示这些权限对哪些数据库和表生效格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user

to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录 identified by:指定用户的登录密码

with grant option:表示允许用户将自己的权限授权给其它用户

网络

hostname: 

# hostname 显示主机名字。使用hostname --help 查看该命令的帮助文档
hostname -d # 显示机器所属域名
hostname -f # 显示完整的主机名和域名
hostname -i # 显示当前主机的ip地址

补充:

hostname 新主机名 命令还可以临时设置主机名。执行这个命令后,若要后续重启生效,必须要手动修改/etc/sysconfig/network 文件里面的 HOSTNAME 的值。

ifconfig: 

查看用户网络配置。注意: windows下查看网络配置是 ipconfig。

iwconfig 工具与 ifconfigethtool 类似,是用于无线网卡的。可以用它查看基本的Wi-Fi网络信息,例如SSID,channel和encryption等等还有其他配置也可以查看和修改。

趣味命令

# 天气预报
curl wttr.in

# 使用Telnet观看星球大战的ASCII演绎。
# 如果没有telnet命令则安装:
# 安装telnet
rpm -qa telnet-server # 返回空则表示没有安装
yum install telnet-server # 安装telnet-server
rpm -qa telnet # 检测是否安装telnet-server,返回空表示没有,否则忽略下面步骤
yum install telnet # 安装
telnet towel.blinkenlights.nl

# cowsay 奶牛图案
yum install cowsay # 安装命令
cowsay # 输出奶牛
cowsay -l # 查看其他动物的名字
cowsay -f # 后面跟上动物
cowsay -f dragon-and-cow "something for nothing" # 输出龙和奶牛并附带附加文字

# lolcat 为Linux带来彩色
yum install ruby # Lolcat 是一个 ruby gem 程序,所以在你的系统中必须安装有最新版本的 ruby。
gem install lolcat # 安装lolcat命令
cowsay -f dragon-and-cow "something for nothing" | lolcat # 彩色的龙和奶牛

# figlet 是一个展示由常规的屏幕字符组成的巨大字符串的应用
yum install figlet
figlet KAI | lolcat -a -d 200 # 彩色展示 'KAI' 这里选项 -a 指的是 Animation(动画), -d 指的是 duration(持续时间)。在上面的例子中,持续 200 次动画。

# 盒子
yum install boxes
echo "be great" | boxes -d boy -a c # 以人形盒子输出文字
boxes -l  # 查看有多少可以使用的盒子格式。

# sl - 跑火车
yum -y install sl # 安装sl命令
sl # 输出蒸汽火车

# fortune
 yum -y install fortune-mod # 安装
 fortune # 随机输出格言

 查看可用内存

  1. free -m(m表示以兆字节为单位显示输出)

  2. vmstat -s (s 标签提供有关内存使用的详细信息)

  3. /proc/meminfo

  4. top

  5. htop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值