liunx常用命令必备,持续更新
阅读原文时间:2023年07月08日阅读:2

inux中的命令的确是非常多,但是只需要掌握我们最常用的命令足够完成我们的工作了。

1.切换超级用户与普通用户

默认登录的是普通用户权限
显示$符
从普通用户切换超级用户权限:
sudo su
输入密码

从超级用户切换普通用户:
su 用户名

2.cd命令

这是一个非常基本,经常使用的命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径

3.ls命令

查看文件与目录的命令,list之意,参数有很多,也可以直接执行ls;

  1. -l :列出长数据串,包含文件的属性与权限数据等
  2. -a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
  3. -d :仅列出目录本身,而不是列出目录的文件数据
  4. -h :将文件容量以较易读的方式(GB,kB等)列出来
  5. -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来

4.清屏的命令

windows下的DOS界面,清屏的命令是cls,分享几种在linux下用过的清屏方法。

1、clear命令 这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。

2、Ctrl+l(小写的L)  这是一个清屏的快捷键,在工作中用得最多的一种清屏方式,清屏效果同clear命令一样。

3、reset命令  这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。

  值得一提的是reset命令在你的终端控制错乱时非常有用。如输入字符不出现在光标的位置的情况。还有当你敲击回车键时,新提示符并没有出现在新行上,

  而是出现在老提示符的前面。此时reset命令就能用来修正这些问题。

4、printf "\033c"命令

它才是真正的清空终端屏幕,它的功能跟DOS里的CLS效果很相似。它的工作原理是什么?

\033  ==  \x1B == 27 == ESC

  于是,这个命令变成了c,它是VT-XXX中表示“Full Reset (RIS)”的转义码。现今我们使用的所有的终端都是VT兼容的,它的另一种实现方式也可以这样:

键盘上Ctrl+v--->Esc-->输入c再回加。但如果你发现自己使用的是一个非常奇怪的终端(如笔者曾经在putty上作过测试),那这个命令你可能用不了。

printf是bash里内置的命令,内置命令的优先级比其它可执行文件要高。

通过上面的4个清屏方式比较,笔者喜欢,在PATH路径下,如/usr/bin/目录下。新建一个名为cls的文件,加上执行权限(chmod 755 cls),写入如入内容:

5、在虚拟机里怎么上下翻看linux

例如man的,上下翻看,使用shift + page up或者是shift + page down

6.linux下文件权限

chmod  xxx  文件名
-rw------- (600) -- 只有属主有读写权限。 
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。 
-rwx------ (700) -- 只有属主有读、写、执行权限。 
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。 
-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。 
-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。

以下是对目录的两个普通设定:

drwx------ (700) - 只有属主可在目录中读、写。 
drwxr-xr-x (755) - 所有用户可读该目录,但只有属主才能改变目录中的内容。

7.grep命令

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

8.find命令

find是一个基于查找的功能非常强大的命令,相对而言,使用也相对复杂,参数比较多,基本语法如下:

find [PATH] [option] [action]

# 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
# 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件

# 与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
# 例如:
find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件

# 与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
             目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
# 例如:
find / -name passwd # 查找文件名为passwd的文件
find . -perm 0755 # 查找当前目录中文件权限的0755的文件
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte

9.cp命令

copy的意思,用于拷贝文件,还可以把多个文件一次性地复制到一个目录下

10.mv命令

mv命令是move的意思,用于移动文件、目录或更名;常用参数如下:

  1. -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  2. -i :若目标文件已经存在,就会询问是否覆盖
  3. -u :若目标文件已经存在,且比目标文件新,才会更新

11.rm命令

rm命令是remove的意思,用于删除文件或目录;常用参数如下:

  1. -f :就是force的意思,忽略不存在的文件,不会出现警告消息
  2. -i :互动模式,在删除前会询问用户是否操作
  3. -r :递归删除,最常用于目录删除,它是一个非常危险的参数

举例

rm -rf dir # 强制删除目录dir中的所有文件

12.创建文件夹

语法

mkdir (选项)(参数)

选项

-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。

目录/usr/test下建立子目录test1,并且只有文件主有读、写和执行权限,其他人无权访问

mkdir -m 700 /usr/test/test1

在当前目录中建立bin和bin下的test2目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问

mkdir -p-m 750 bin/test2

13.ps命令

ps命令是process的意思,用于将某个时间点的进程运行情况选取下来并输出;常用参数如下:

-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出

使用比较多的是

ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态

14.kill命令

用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,它的基本语法如下:

1:SIGHUP,启动被终止的进程
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
3:SIGKILL,强制中断一个进程的进行
4:SIGTERM,以正常的结束进程方式来终止进程
5:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行

例如:

  1. # 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程
  2. kill -SIGTERM %1
  3. # 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得
  4. kill -SIGHUP PID

15.file命令

用于判断接在file命令后的文件的基本数据,在Linux下文件的类型不以后缀为分的,所以这个命令很有用,用法非常简单,基本语法如下:

file filename

例如:

file test1

16.tar命令

用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。常用参数如下:

-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir

基本上记住这三条命令足以:

  1. 压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
  2. 查询:tar -jtv -f filename.tar.bz2
  3. 解压:tar -zxvf  filename   解压文件为filename的文件 解压在当前目录

17.cat命令

用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用,可以一页页地查看数据。例如:

  cat text | less # 查看text文件中的内容

查看完之后,按下‘q’退出。

18.chgrp命令

用于改变文件所属用户组,使用非常简单,基本用法如下:

  1. chgrp [-R] dirname/filename
  2. -R :进行递归的持续对所有文件和子目录更改
  3. # 例如:
  4. chgrp ubuntu -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为ubuntu

19.chown命令

用于改变文件的所有者,与chgrp命令的使用方法相同,只是修改的文件属性不同,详细参数如下:

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。

将目录/usr/test1及其下面的所有文件、子目录的文件主改成 ubuntu:

chown -R ubuntu /usr/test1

20.chmod命令

chmod 777 -R xxx (更改文件夹及其子文件夹权限为777)
chmod 600 ××× (只有所有者有读和写的权限)
chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)
chmod 700 ××× (只有所有者有读和写以及执行的权限)
chmod 666 ××× (每个人都有读和写的权限)
chmod 777 ××× (每个人都有读和写以及执行的权限

以下是对目录的两个普通设定:

chomd 700 filename 只有属主可在目录中读、写。

chomd 755 filename 所有用户可读该目录,但只有属主才能改变目录中的内容。

21.vim命令

主要用于文本编辑,它接一个或多个文件名作为参数,如果文件存在就打开,如果文件不存在就以该文件名创建一个文件。

在当前目录下   vim filename

vim常用的退出保存命令

退出vim的快捷键,不需要进入命令编辑模式

zz    保存退出

zq    不保存退出,q表示放弃

之所以按住shift,其实是切换大小写

在命令编辑模式下:

:q 不保存退出

:q! 不保存强制退出

:wq 保存退出,w表示写入,不论是否修改,都会更改时间戳

:x     保存退出,如果内容未改,不会更改时间戳

22.time命令

用于测算一个命令(即程序)的执行时间。使用非常简单,在输入命令的前面加入一个time即可

在程序或命令运行结束后,在最后输出了三个时间:

user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;

system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;

real:实际时间,从command命令行开始执行到运行终止的消逝时间;

23.修改Ubuntu的默认root密码

1.默认root密码是随机的,即每次开机都有一个新的root密码。我们可以在终端输入命令 sudo passwd,然后输入当前用户的密码,
enter,

2.终端会提示我们输入新的密码并确认,此时的密码就是root新密码。修改成功后,输入命令 su root,再输入新的密码就ok了

24.为什么Ifconfig只显示一个lo

Ifconfig只显示一个lo,是网卡未启动,输入命令:ifconfig -a,显示所有网络接口的信息,无论是否激活。ifconfig显示当前激活的网络接口信息。就可以看见如eth0或ens33或ens192等,然后ifconfig  eth0或enp5s0或ens33或ens192  up即可,再ifconfig就可以看见不是lo一个了(如输入ifconfig -a后还是只有一个lo,网上说缺少驱动,自己再百度吧)

25.CentOS、Ubuntu配置网卡子接口

CentOS

# ip addr add 10.1.1.1/24 dev eth0 lable eth0:0

以上为临时配置,重启失效。若需永久保存,增加网络配置文件

# vim /etc/sysconfig/network-script/ifcfg-eth0:0
DEVICE=eth0:0
IPADDR=10.1.1.1
PREFIX=24
BOOTPROTO=none
ONPARENT=yes
ONBOOT=yes

重启网络服务

# service network restart #CentOS6

systemctl restart network.services #CentOS7

Ubuntu16

# ip addr add 10.1.1.1/24 dev ens0 lable ens0:0

修改网络配置文件,永久保存

# vim /etc/network/interfaces
auto ens3:0
iface ens3:0 inet static
address 10.1.1.1
netmask 255.255.255.0

重启网络服务

# service network restart

26.VM ubuntu ping unknow host

解决方法

例如网关地址为:192.168.1.1

  1. route add default gw 192.168.1.1
  2. sudo vim /etc/resolv.conf

在 /etc/resolv.conf 中加入

  1. # Generated by NetworkManager
  2. nameserver 192.168.1.1

修改后可正常ping通,但系统重启后再ping会显示unknow host,因此需要锁定 /etc/resolv.conf 文件,不允许系统启动时重写。

  1. sudo chattr +i /etc/resolv.conf

27.检查linux是否安装Java、Tomcat、MySQL

linux下,查看安装软件

linux下的java

Java -version

如果出现java版本,证明java安装成功。

linux下的tomcat

  rpm -qa|grep tomcat

一般是/usr/local/tomcat6

检查linux是否安装mysql

usr/bin/MySQL 是指:mysql的运行路径 
  var/lib/mysql 是指:mysql数据库文件的存放路径 
  usr/lib/mysql 是指:mysql的安装路径

mysql 的守护进程是mysqld

[root@localhost ~]# service mysqld start 
  启动 MySQL:                                               [确定]

如果你看到有输入ps -el | grep mysqld 出现下面的信息,就说明服务器安装起来了~~

[root@localhost ~]# ps -el | grep mysqld 
  4 S     0  1796     1  0  85   0 -  1513 wait   ?        00:00:00 mysqld_safe 
  4 S    27  1856  1796  0  78   0 - 34055 -      ?        00:00:00 mysqld

whereis mysql

如果你只要查询文件的运行文件所在地址,直接用下面的命令就可以了(以mysql为例):

which mysql

28.Centos安装vim

通过查看命令

rpm -qa | grep vim

发现Centos里的vim只默认安装了vim-minimal-7.x。

命令行里敲入安装vim:

yum -y install vim*

29.启动tomcat报错

报错内容:The processing instruction target matching "[xX][mM][lL]" is not allowed.

Spring中的错误:

The processing instruction target matching "[xX][mM][lL]" is not allowed.

原因:很简单xml的的第一行在第二行去了。空行了。所以出现了匹配错误。这么简单的错误,只是不知情啊。哈哈。

空行和空格都会出现类似的错误,所以下次做的时候一定要注意。

30.centos系统时间与硬件时间设置、同步

将系统时间设置成2018年7月31日 12:00:00

date -s "07/31/18  12:00:00"

hwclock -s 将BIOS硬件时间同步到系统时间

hwclock -w 将系统时间同步到BIOS硬件时间

修改linux系统的时间EDT为CST

EDT:指美国东部夏令时间,波士顿、纽约市、华盛顿哥伦比亚特区,都在这个时区内,跟北京时间有12小时的时差,晚12小时。

CST:可以指下面两种:

1. 美国中部标准时间(西六区,-6:00),中国是东八区(+8:00),北京时间比美国中部标准时间早14个小时。3:45 PM CST 是北京时间凌晨1:45。
2. 中澳大利亚标准时间(+10:30),中国是东八区(+8:00),北京时间比中澳大利亚标准时间晚2个半小时。3:45 PM CST 是北京时间下午上午5:45。

那么现在只要改成北京时间的时区CST就可以了,修改如下:

[root@localhost ~]# mv /etc/localtime /etc/localtime.bak 

[root@localhost ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

[root@localhost ~]# date

Linux服务器运行久时,系统时间就会存在一定的误差,本篇文章就来介绍怎样使服务器的时间和网络服务器的时间同步。

环境:centos

网络时间服务器

首先得确保这些服务器都能ping通否则是无法时间同步的。否则会报错“no server suitable for synchronization found”

  • 中国国家授时中心:210.72.145.44   ----暂时无法使用
  • NTP服务器(上海) :ntp.api.bz
  • 中国ntp服务器:cn.pool.ntp.org     不可用
  • pool.ntp.org

时间同步工具

rdate:rdate -s

ntpdate:ntpdate -u(使用-u参数会返回误差,也可以使用-s)

以上两个工具都可以用来同步网络时间服务器,centos默认都有安装,两个工具的使用方法都很简单,本章主要介绍ntpdate工具。如果没有安装安装方法如下:

yum -y install ntp

同步时间

1.修改时区

cp -y /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

vim  /etc/sysconfig/clock

ZONE="Asia/Shanghai"
UTC=false
ARC=false

2.同步时间

/usr/sbin/ntpdate -u ntp.api.bz

3.写入硬件时间

服务器每次重启都会参考硬件的时间,所以需要将当前系统的时间写入到硬件。

查看当前硬件时间:

hwclock -r

[root@localhost ~]# hwclock -r
Thu 12 May 2016 08:05:43 PM CST -0.674165 seconds

写入硬件时间:

hwclock -w

自动时间同步

1.配置开机启动校验

vim /etc/rc.d/rc.local

/usr/sbin/ntpdate -u ntp.api.bz> /dev/null 2>&1; /sbin/hwclock -w

2.配置定时任务

vim /etc/crontab

00 10 * * * root /usr/sbin/ntpdate -u ntp.api.bz > /dev/null 2>&1; /sbin/hwclock -w