Fork me on GitHub

linux 常用命令

认识Linux系统及基础命令

Linux中一切皆文件
内核 + 文件系统 + shell = Linux
 Linux是一个树形的文件系统结构
 第一层目录:/ 整个文件系统的访问入口

重要的二级目录

bin:存储Linux上常用的命令
dev:放置设备的目录
etc:Linux配置文件目录
home:普通用户会在该目录下创建属于自己的目录
root:管理员用户家目录
media:即插即用型的设备的挂载目录,光盘自动挂载到media目录下
mnt:挂载目录
将硬盘中的分区(C/D/E)与目录进行关联
/datas/cpan 《- C分区
/datas/Dpan 《- D分区
/datas/Epan 《- E分区
opt:可选目录
usr:放安装的应用程序
sbin:只有管理员才能执行的命令
var:Linux日志默认存储目录

Linux 基础命令

cd命令

用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
cd /root/Docements # 切换到目录/root/Docements  
cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录    
cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录  
 cd ./etc/hadoop

ls命令

ls 用于列举一个目录或者文件
ls -a 显示所有文件及目录,包括隐藏文件
ls -l 显示文件详细信息
# 常用
ls -a
ls
ll

grep命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为
-a :将binary文件以text文件的方式查找数据  
-c :计算找到‘查找字符串’的次数  
-i :忽略大小写的区别,即把大小写视为相同  
-v :反向选择,即显示出没有‘查找字符串’内容的那一行  

# 把ls -l的输出中包含字母file(不区分大小写)的内容输出  
ls -l | grep -i properties

find命令

find是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:

find [PATH] [option] [action]  

与时间有关的参数

  -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;  
  -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;  
  -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;  
  -newer file : 列出比file还要新的文件名  

与用户或用户组名有关的参数

  -user name : 列出文件所有者为name的文件  
  -group name : 列出文件所属用户组为name的文件  
  -uid n : 列出文件所有者为用户ID为n的文件  
  -gid n : 列出文件所属用户组为用户组ID为n的文件  

与文件权限及名称有关的参数

-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 /root -mtime 0 # 在当前目录下查找今天之内有改动的文件  
find /home/root -user root # 在目录/home/root 中找出所有者为root 的文件  
find / -name passwd # 查找文件名为 passwd 的文件  
find . -perm 0755 # 查找当前目录中文件权限的0755的文件  
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte  

cp命令

该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下,它的常用参数如下:

-a :将文件的特性一起复制  
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份  
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行  
-r :递归持续复制,用于目录的复制行为  
-u :目标文件与源文件有差异时才会复制
eg. 
cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2  
cp file1 file2 file3 dir #把文件file1、file2、file3复制到目录dir中 

mv命令

该命令用于移动文件、目录或更名,move之意,它的常用参数如下:

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

mv file1 file2 file3 dir # 把文件file1、file2、file3移动到目录dir中  
mv file1 file2 # 把文件file1重命名为file2  

rm命令

该命令用于删除文件或目录,remove之间,它的常用参数如下:

-f :就是force的意思,忽略不存在的文件,不会出现警告消息  
-i :互动模式,在删除前会询问用户是否操作  
-r :递归删除,最常用于目录删除,它是一个非常危险的参数
eg.
rm -i file # 删除文件file,在删除之前会询问是否进行该操作  
rm -fr dir # 强制删除目录dir中的所有文件  

ps命令

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

-A :所有的进程均显示出来  
-a :不与terminal有关的所有进程  
-u :有效用户的相关进程  
-x :一般与a参数一起使用,可列出较完整的信息  
-l :较长,较详细地将PID的信息列出  
eg.
ps aux # 查看系统所有的进程数据  
ps ax # 查看不与terminal有关的所有进程  
ps -lA # 查看系统所有的进程数据  
ps axjf # 查看连同一部分进程树状态  

kill命令

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

kill -signal PID  
1:SIGHUP,启动被终止的进程  
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行  
9:SIGKILL,强制中断一个进程的进行  
15:SIGTERM,以正常的结束进程方式来终止进程  
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
eg.
# 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程  
kill -SIGTERM %1   
# 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得  
kill -SIGHUP PID  

killall命令

该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:

-i :交互式的意思,若需要删除时,会询问用户  
-e :表示后面接的command name要一致,但command name不能超过15个字符  
-I :命令名称忽略大小写  
# 例如:  
killall -SIGHUP syslogd # 重新启动syslogd  

file命令

查看文件类型

file filename  
#例如:  
file test.txt
test.txt: ASCII text

tar命令

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

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

tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/

cat命令

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

cat text | less # 查看text文件中的内容  
# 注:这条命令也可以使用less text来代替  
hdfs dfs -cat /user/hive/warehouse/myhive.db/stu/000000_0;

chgrp命令

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

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

chown命令

该命令用于改变文件的所有者,与chgrp命令的使用方法相同,只是修改的文件属性不同,不再详述。

chmod命令

该命令用于改变文件的权限,一般的用法如下:

chmod [-R] xyz 文件或目录  
-R:进行递归的持续更改,即连同子目录下的所有文件都会更改  

用户权限

r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1,777就是rwxrwxrwx,意思是该登录用户(可以用命令id查看)、他所在的组和其他人都有最高权限。

案例讲解

chmod –R 777 *
*:通配符,指当前目录下的所有文件及目录
将当前目录下的所有文件及子目录的文件拥有者权限设置为读、写、可执行,文件拥有者所在的用户组成员具备读、写、可执行权限,其它用户也具备读、写、可执行权限
chmod 777 jdk-6u45-linux-x64.bin
jdk-6u45-linux-x64.bin 拥有者权限设置为读、写、可执行,文件拥有者所在的用户组成员具备读、写、可执行权限,其它用户也具备读、写、可执行权限

vim命令

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

1. vim模式

正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空

插入模式(按i进入) 左下角显示--INSERT--

可视模式(按v进入) 左下角显示--VISUAL--

替换模式(按r或R开始) 左下角显示 --REPLACE--

命令行模式(按:或者/或者?开始)

ex模式 没用过,有兴趣的同学可以自行了解
2. 打开文件

# 打开单个文件

vim file   

# 同时打开多个文件

vim file1 file2..
# 在vim窗口中打开一个新文件

:open [file]      

【举个例子】

# 当前打开1.txt,做了一些编辑没保存

:open!         放弃这些修改,并重新打开未修改的文件

# 当前打开1.txt,做了一些编辑并保存

:open 2.txt    直接退出对1.txt的编辑,直接打开2.txt编辑,省了退出:wq再重新vim 2.txt的步骤
 

# 打开远程文件,比如ftp或者share folder

:e ftp://192.168.10.76/abc.txt

:e \qadrive\test\1.txt


# 以只读形式打开文件,但是仍然可以使用 :wq! 写入

vim -R file

# 强制性关闭修改功能,无法使用 :wq! 写入

vim -M file
3. 插入命令

i 在当前位置生前插入

I 在当前行首插入

a 在当前位置后插入

A 在当前行尾插入

o 在当前行之后插入一行

O 在当前行之前插入一行
4. 查找命令

最简单的查找

/text  查找text,按n健查找下一个,按N健查找前一个。

?text  查找text,反向查找,按n健查找下一个,按N健查找前一个。

vim中有一些特殊字符在查找时需要转义  .*[]^%/?~$

:set ignorecase  忽略大小写的查找

:set noignorecase  不忽略大小写的查找

快速查找,不需要手打字符即可查找

*        向后(下)寻找游标所在处的单词

#        向前(上)寻找游标所在处的单词
5. 替换命令

~  反转游标字母大小写

r<字母>           将当前字符替换为所写字母

R<字母><字母>...  连续替换字母

cc    替换整行(就是删除当前行,并在下一行插入)

cw    替换一个单词(就是删除一个单词,就进入插入模式),前提是游标处于单词第一个字母(可用b定位)

C     (大写C)替换至行尾(和D有所区别,D是删除(剪切)至行尾,C是删除至行位并进入插入模式)

:s/old/new/    用old替换new,替换当前行的第一个匹配

:s/old/new/g   用old替换new,替换当前行的所有匹配

:%s/old/new/   用old替换new,替换所有行的第一个匹配

:%s/old/new/g  用old替换new,替换整个文件的所有匹配

:10,20 s/^/ /g 在第10行至第20行每行前面加四个空格,用于缩进。

ddp    交换光标所在行和其下紧邻的一行。

xp  交换相邻两个字母的顺序
6. 撤销与重做

u 撤销(Undo)

U 撤销对整行的操作
 
Ctrl + r 重做(Redo),即撤销的撤销。
7. 删除命令

需要说明的是,vim 其实并没有单纯的删除命令,下面你或许理解为剪切更加准确。

以字符为单位删除

x   删除当前字符

3x  删除当前字符3次

X   删除当前字符的前一个字符。

3X  删除当前光标向前三个字符

dl  删除当前字符, dl=x

dh  删除前一个字符,X=dh

D   删除当前字符至行尾。D=d$

d$  删除当前字符至行尾

d^  删除当前字符之前至行首

以单词为单位删除

dw  删除当前字符到单词尾

daw 删除当前字符所在单词

以行为单位删除

dd  删除当前行

dj  删除下一行

dk  删除上一行

dgg  删除当前行至文档首部

d1G  删除当前行至文档首部

dG   删除当前行至文档尾部

kdgg  删除当前行之前所有行(不包括当前行)

jdG   删除当前行之后所有行(不包括当前行)

10d     删除当前行开始的10行。

:1,10d  删除1-10行

:11,$d  删除11行及以后所有的行

:1,$d   删除所有行

J     删除两行之间的空行,实际上是合并两行。
8. 复制粘贴

普通模式中使用y复制

yy   复制游标所在的整行(3yy表示复制3行)

y^   复制至行首,或y0。不含光标所在处字符。

y$   复制至行尾。含光标所在处字符。

yw   复制一个单词。

y2w  复制两个单词。

yG   复制至文本末。

y1G  复制至文本开头。

普通模式中使用p粘贴

p(小写):代表粘贴至光标后(下边,右边)

P(大写):代表粘贴至光标前(上边,左边)
9. 剪切粘贴

dd    其实就是剪切命令,剪切当前行

ddp   剪切当前行并粘贴,可实现当前行和下一行调换位置

正常模式下按v(逐字)或V(逐行)进入可视模式

然后用jklh命令移动即可选择某些行或字符,再按d即可剪切

ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴

:1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。

:1, 10 m 20 将第1-10行移动到第20行之后。
10. 退出保存

:wq 保存并退出

ZZ 保存并退出

:q! 强制退出并忽略所有更改

:e! 放弃所有修改,并打开原来文件。
 
ZZ 保存并退出

:sav(eas) new.txt  另存为一个新文件,退出原文件的编辑且不会保存

:f(ile) new.txt    新开一个文件,并不保存,退出原文件的编辑且不会保存
以字符为单位移动

h   左移一个字符

l   右移一个字符

k   上移一个字符

j   下移一个字符

 

# 【定位字符】f和F

fx    找到光标后第一个为x的字符

3fd   找到光标后第三个为d的字符

 

F   同f,反向查找。

以行为单位移动

# 10指代所有数字,可任意指定

10h  左移10个字符

10l  右移10个字符

10k  上移10行

10j  下移10行
 

$   移动到行尾

3$  移动到下面3行的行尾

以单词为单位移动

w  向前移动一个单词(光标停在单词首部)

b  向后移动一个单词

e,同w,只不过是光标停在单词尾部

ge 同b,光标停在单词尾部。

以句为单位移动

(   移动到句首

)   移动到句尾

跳转到文件的首尾

gg  移动到文件头。 = [[  == ``

G   移动到文件尾。 = ]]

其他移动方法

^   移动到本行第一个非空白字符上。

0   移动到本行第一个字符上(可以是空格)

使用 具名标记 跳转,个人感觉这个很好用,因为可以跨文件。

使用 ma ,可以将此处标记为 a,使用 'a 进行跳转

使用 :marks 可以查看所有的标记

使用 :delm!可以删除所有的标记

当在查看错误日志时,正常的步骤是,vim打开文件,然后使用 shift+g 再跳转到最后一行,这里有个更简单的操作可以在打开文件时立即跳到最后一行。只要在 vim 和 文件 中间加个 + 即可。

vim + you.log

举一反三,当你想打开文件立即跳转到指定行时,可以这样

# 打开文件并跳转到 20 行

vim you.log +20

当你使用 / 搜索定位跳转或者使用 :行号 进行精准跳转时,有时我们想返回到上一次的位置,如何实现?

只要使用 Ctrl+o 即可返回上一次的位置。

gcc命令

对于一个用Linux开发C程序的人来说,这个命令就非常重要了,它用于把C语言的源程序文件,编译成可执行程序

time命令

该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个time即可,例如:

time ./process  
time ps aux  

必知必会

1、常用操作

  • 查看当前目录下的所有文件及目录
    • ls/ll
  • 进入目录
    • cd
  • 查看当前目录
    • pwd
  • 结束当前进程
    • ctrl+c/ctrl+z
  • 新建目录
    • mkdir dir1[ dir2 dir3 dir4] 新建四个dir
  • 删除目录
    • rm -rf dir 删除目录下及目录下的所有文件
  • 递归创建目录
    • mkdir -p /dir1/dir2/dir3/dir4 递归创建目录
    • scp -r
  • 清屏
    • clear 或者 ctrl+l
  • 查看IP信息
    • ifconfig
  • (防火墙)打开、关闭、查看状态
    • service iptables start、stop、status
  • (网络)打开、关闭、查看状态
    • service network start、stop、status
  • mysql服务打开、关闭、查看状态
    • service mysqld start、stop、status
  • 配置服务开机启动
    • chkconfig mysqld on
  • mysql shell客户端
    • mysql -uroot -p123456
  • yum 安装
    • yum install -y telnet
    • yum remove telnet
  • 测试机器之间能否通信
    • ping 192.122...
  • 测试能否与某个应用(比如mysql)通信
    • telnet 192.123.. 3306
  • 自动补全
    • tab
  • 查看进程
    • ps -ef | grep impala
  • 过滤相关信息
    • grep
    • netstat -nltp | grep 3306 查看端口
    • jps | grep NameNode
    • cat | grep -v "#"
    • ps -ef | grep redis | grep -v grep
  • 查看java进程
    • jps
  • 编辑文本
    • vi/vim/touch
  • 删除文件
    • rm -rf filename
  • 查看文件
    • cat filename
    • more filename
    • tail -f/-F/-300f filename.txt 查看文件后300行
      • -f 是一个小狗,不是很凶,只要删除了当前文件,再去重新创建,不追踪了。
      • -F是一个大狗,很凶,就算删除了,只要重新创建同名文件,继续追踪。
    • head [-number]filename查看文件头十行
  • 移动文件
    • MV
    • mv file1 file2 更名
  • 查找文件
    • find / -name a.xx
  • 复制文件
    • cp file1 /directory/
  • 节点传送文件
    • scp -r /export/servers/hadoop node02:/export/servers
    • scp -r /export/servers/hadoop node02:$PWD (发送到当前同级目录)
    • scp -r /export/servers/hadoop user@node02:/export/servers
  • 查看日期
    • date
    • date +"%Y-%m-%d %H:%M:%S"
    • date -d "-1 day" +"%Y-%m-%d %H:%M:%S"
  • 创建文本
    • while true; do echo 1 >> /root/a.txt ; sleep 1;done

2、用户管理

  • 添加用户
    • useradd username
  • 更改用户密码
    • password username
  • 删除用户
    • userdel username 删除用户(不删除用户数据
    • userdel -r username 删除用户和用户数据

3、压缩包管理

  • gz压缩包
    • tar czf file.tar.gz file 制作file的压缩包
    • tar zxvf file.tar.gz -C /directory 解压缩包
  • zip压缩包
    • zip file.zip file 将file制成名为file.zip
    • unzip file.zip 解压缩

4、查看属性

  • 查看磁盘大小
    • df -h
  • 查看内存大小
    • free -h
  • 查看文件大小
    • du -h
  • 任务管理器
    • top
  • 清理缓存
    • echo 1 > /proc/sys/vm/drop_caches

相关问答

linux 查看当前进程有哪些方式

| https://www.cnblogs.com/hml-blog-com/p/11558369.html

Linux 使用shell获取当前进程id

UID是用户ID,PID是进程ID,PPID是父进程ID。

UID
UID 用户身份证明(User Identification)的缩写。UID用户在注册后,系统会自动的给你一个UID的数值。意思就是给这名用户编个号。
PID
PID(Process Identification)操作系统里指进程识别号,也就是进程标识符。操作系统里每打开一个程序都会创建一个进程ID,即PID。PID(进程控制符)英文全称为Process Identifier。PID是各进程的代号,每个进程有唯一的PID编号。它是进程运行时系统分配的,并不代表专门的进程。在运行时PID是不会改变标识符的,但是进程终止后PID标识符就会被系统回收,就可能会被继续分配给新运行的程序。
  只要运行一程序,系统会自动分配一个标识。是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。只要没有成功运行其他程序,这个PID会继续分配给当前要运行的程序。如果成功运行一个程序,然后再运行别的程序时,系统会自动分配另一个PID。

PPID
代表当前进程的父进程ID;

提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。

当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。
子shell进程的PID存储在一个特殊的变量‘$$'中, PPID存储子shell父进程的ID(也就是主shell), UID存储了执行这个脚本的当前用户ID.
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $UID"

centOS6与centOS7 的区别

一、系统初始化技术演变——开机启动流程
CentOS 6:采用了INIT技术,整个开机过程是自检BIOS——MBR引导——GRUB加载——加载内核——启动INIT进程——读取INITTAB配置文件,根据配置文件指定的模式按顺序来启动进程服务。INIT技术让启动流程很清晰,依赖SHELL脚本。因为启动进程时是按顺序一个一个启动,所以速度慢,会因为某个服务卡住而影响系统的启动。

CentOS 7:采用了systemd技术。这是替代INIT的新技术,采用了并行方式来启动进程,所以启动速度更快,并且兼容INIT的命令以降低迁移成本。

PS:通过ps命令查看PID为1的进程可以得知当前系统所采用的技术

二、网络设置方式的改变
在CentOS 6中让人熟悉的ipconfig在CentOS 7中被ip命令取代了;图形化网络配置工具nmtui取代了setup

upgrade-centos-6-to-7.jpg
upgrade-centos-6-to-7.jpg

三、主机名与字符集
在CentOS 6中要修改主机名可以通过编辑/etc/sysconfig/network文件,但是在CentOS 7中已经废弃这个方式,而使用了/etc/hostname文件。对于临时修改主机名的方式不变,依然是hostname命令。并且CentOS 7中新增了一个主机名管理工具hostnamectl(该工具对文件名的修改是永久有效)。

而对于字符集的修改,CentOS 7使用了新的配置文件/etc/locale.conf来替代/etc/sysconfig/i18n。如果要临时修改字符集的话方式不变,修改LANG变量,如LANG=zh_CN.UTF-8。新增了字符集管理工具localectl,效果和hostnamectl一样。

四、兼容/etc/rc.local
/etc/rc.local文件中记录了需要开机后自动执行的命令,在CentOS 7中该文件虽然已经被废弃,但是也能兼容使用,只需要给该文件赋予可执行权限:

chmod +x /etc/rc.d/rc.local

五、runlevel运行级别的区别
CentOS 6中的/etc/inittab文件是基于init技术实现的,所以在CentOS 7中自然无法使用,但是该文件依然被保留下来,只不过其中的内容已经被替换为引导内容,让用户知道现在如何切换运行级别,由于这个不常用就不继续描写。

六、服务的管理
这是让用户最不爽的修改,增加了systemctl工具,融合了service和chkconfig命令的功能,具体使用方式见图:

systemctl: 融合service和chkconfig的功能于一体

systemctl start crond.service 启动服务
systemctl stop crond.service 停止服务
systemctl restart crond.service 重启服务
systemctl reload crond.service 重载服务
systemctl status crond.service 查看服务运行状态
systemctl list-unit-files 查看所有开机服务
systemctl enable crond.service 开机自启动
systemctl disable crond.service 开机不启动
systemctl is-enabled crond.service 检查是否开机自启动
posted @ 2020-08-04 22:34  园狐  阅读(150)  评论(0编辑  收藏  举报