Linux常用命令

Linux常用命令

Tab键:命令补全

当我们在Linux系统的终端中,输入命令时,可以无需完整的命令,只需要记住命令的前几个字母即可,然后按Tab键,系统会自动进行补全操作。需安装命令补全工具bash-completion

[root@localhost ~]# yum install -y bash-completion

按一次Tab键,补全;按两次Tab键,显示所有符合补全的项

su切换用户

[root@server1 ~]# su - zhangsan <--超管切换普通用户不需要密码
[zhangsan@server1 ~]$ su - root <--普通用户切换超管或其他用户需要被切换用户的密码
密码:
上一次登录:日 8月  8 15:53:32 CST 2021从 192.168.226.1pts/0 上
[root@server1 ~]# 
#加横杆表示切换用户的同时,切换用户的家目录

uname获取系统相关信息

[root@server1 ~]# uname -a
Linux server1 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

选项说明:
-a :all,显示所有(类型、全部主机名、内核版本、发布时间、开源计划)

ls显示文件信息

ls = list show

# ls                    <--显示当前目录下的文件信息
# ls [路径]              <--显示其他目录下的文件信息
# ls [选项] [路径]
选项说明:
-l :ls -l,代表以详细列表的形式显示当前或其他目录下的文件信息(简写命令=>ll)
-h :ls -lh(ll -h也可),通常与-l结合一起使用,表以较高的可读性显示文件的大小(kb/mb/gb)
-a :ls -a,a是all缩写,代表显示所有文件(也包含隐藏文件=>大部分以.开头)
-i :ls -i,显示inode数目

pwd打印当前目录

pwd = print working directory

# pwd

cd切换目录

cd = change directory

# cd [路径]
选项说明:
路径既可以是绝对路径,也可以是相对路径

# cd /home/zhangsan
# cd ../../ #返回上两级目录
# cd ~  # 直接回家
# cd    # 直接回家

clear清屏

# clear

reboot重启

# reboot

shutdown关机

# shutdown -h 0或now         <--立即关机
# shutdown -h 10            <--代表10分钟后,自动关机
# shutdown -c               <--取消关机(需要先按Ctrl + C)
选项说明:
-h :halt缩写,代表关机

在Linux系统中,立即关机除了使用shutdown -h 0以外还可以使用halt -p或者poweroff命令

history显示历史命令

  • 默认显示前1000条命令
# history
选项说明:
‐ a : 追加本次会话执行的命令历史列表至历史文件中
‐ d :删除历史中指定的命令
‐ c : 清空历史命令

扩展:

  1. 支持光标上下键,复制可使用

  2. ^R:搜索历史命令(输入一段某条命令的关键字:必须是连续的)

  3. !220:执行历史命令中第220条命令

  4. !字符串xxxx:搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser

  5. !$

  • 引用上一个命令的最后一个参数 ,当上一个命令没有参数的时候,!$代表的是上一个命令本身

hostnamectl修改主机名

hostnamectl : hostname + control

获取主机名

# hostname	CentOS6
# hostnamectl  CentOS7

设置主机名

Centos7中主机名分3类:

① 静态static主机名:长久生效

② 瞬态transient主机名:临时生效

③ 灵活pretty主机名:可以包含一些特殊字符

更改主机名称,让其永久生效?① 使用静态主机名 ②更 改配置文件/etc/hostname

① 瞬态主机名称(临时设置)
# hostnamectl --transient set-hostname 主机名
主机名称 建议遵循 FQDN协议(功能+公司域名)
# su 立即生效
② 静态主机名称(永久生效)
# hostnamectl --static set-hostname 主机名 (--static也可以省略)

只有这个常用:hostnamectl set-hostaname 主机名
③ 灵活主机名称(主机名称可以添加特殊字符)
# hostnamectl --pretty set-hostname 主机名(包含特殊字符)
查看灵活的主机名称
# hostnamectl --pretty

systemctl管理服务

显示系统服务

# systemctl list-units --type service --all 列出所有服务(包含启动的和没启动的)
# systemctl list-units --type service 列出所有启动的服务
# systemctl list-units --type service | grep sshd 列出所有含有ssh字段的启动的服务

系统服务管理

# systemctl status sshd 查询ssh服务的状态
# systemctl stop network 停止network服务
# systemctl start network 启动network服务
# systemctl restart crond 重启crond服务
# systemctl reload crond 热重载重载crond服务

reload:热重载,指重新加载指定服务的配置文件(并非所有服务都支持reload,但都支持restart)

服务持久化

# systemctl enable crond 设置crond服务开机自启
# systemctl disable crond 设置crond服务开机不自启

常见报错:

[root@server1 ~]# systemctl enable network
network.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network on

以上提示代表network.service不是一个本地的系统服务,所以想设置开机自启需要使用/sbin/chkconfig进行操作

解决方法:

[root@server1 ~]# /sbin/chkconfig network on

find文件搜索

通过文件名搜索文件
# find /etc -name "*.conf"
# find /etc -name "*.conf" -type f
# find ./ -name *.txt | xargs rm -rf


通过文件修改时间搜索文件
# find ./ -name "*.txt" -mtime +3 搜索三天前修改的文件(今天为25号,搜索的为22号之前的文件,不包含22号的文件)
# find ./ -name "*.txt" -mtime -3 搜索三天内修改的文件(今天为25号,搜索的为25.24.23号的文件)

通过文件大小搜索文件
# find /root -type f -size 5M  搜索/root目录下大小为5M的文件
# find /root -type f -size -5M 搜索/root目录下小于5M的文件
# find /root -type f -size +5M 搜索/root目录下大于5M的文件

选项说明:
-name :指定文件名,支持*通配符
-type :f代表普通文件、d代表文件夹
-mtime:指定修改时间,默认单位为天
-size :指定文件大小,常用单位k,M,G

dd生成指定大小的测试文件

# dd if=/dev/zero of=a.txt bs=1M count=1  创建一个1M大小的a.txt文件
选项说明:
if:input file输入文件
of:output file输出文件
bs代表字节为单位的块大小。
count代表被复制的块。
其中/dev/zero是一个字符设备,会不断返回0值字节。
[root@server1 ~]# dd if=/dev/zero of=a.txt bs=1M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.00100714 秒,1.0 GB/[root@server1 ~]# ll -h
总用量 1.1M
-rw-------. 1 root root 1.3K 7月  24 17:35 anaconda-ks.cfg
-rw-r--r--  1 root root 1.0M 8月  21 13:04 a.txt

tree创建文件树形列表

[root@server1 ~]# tree
-bash: tree: 未找到命令

报错:-bash: tree: 未找到命令

原因:tree命令相关软件未安装

解决:yum install -y tree

# tree 显示当前目录
# tree /var/log 显示/var/log这个目录文件列表

[root@server1 ~]# tree /var/log
/var/log
├── anaconda
│   ├── anaconda.log
│   ├── ifcfg.log
│   ├── journal.log
│   ├── ks-script-r0lFV_.log
│   ├── ks-script-_vylTn.log
│   ├── packaging.log
│   ├── program.log
│   ├── storage.log
│   ├── syslog
│   └── X.log
├── audit
│   └── audit.log
├── boot.log
├── boot.log-20210816
├── btmp
├── btmp-20210816
├── ceph
├── cron
├── cron-20210816
├── dmesg
├── dmesg.old
├── firewalld
├── grubby
├── grubby_prune_debug
├── httpd
├── lastlog
├── maillog
├── maillog-20210816
├── messages
├── messages-20210816
├── ntpstats
├── rhsm
├── secure
├── secure-20210816
├── spooler
├── spooler-20210816
├── tallylog
├── tuned
│   └── tuned.log
├── wtmp
├── yum.log
└── zabbix
    ├── zabbix_agentd.log
    └── zabbix_agentd.log-20210816

date获取系统当前时间

[root@server1 ~]# date
2021年 08月 21日 星期六 14:34:21 CST
[root@server1 ~]# date +%F
2021-08-21
[root@server1 ~]# date +%Y%m%d
20210821
[root@server1 ~]# date +%T
14:38:45

# date +"时间格式"
%F : 年--%T : 小时:分钟:秒
%Y : Year,%m : month,%d : day,%H : Hour,小时
%M : Minute,分钟
%S : Second,[root@server1 ~]# cp a.txt $(date +%F).txt
[root@server1 ~]# ls
2021-08-21.txt  anaconda-ks.cfg  a.txt  dir1  dir2  video.mp4

crontab计划任务-定时备份

# crontab -l 查询当前的计划任务
# crontab -e 编写计划任务
-l : list,查询当前用户的计划任务
-e : edit,编辑计划任务
	计划任务编写格式:
	分 时 日 月 周 执行的命令(要求使用完整路径,* 表示任何数字都符合)
	 0 2 * * * /run.sh # 每天的2点
     0 2 14 * * /run.sh # 每月14号2点
     0 2 14 2 * /run.sh # 每年2月14号2点
     0 2 * * 5 /run.sh # 每个星期5的2点
     0 2 * 6 5 /run.sh # 每年6月份的星期5的2点
     0 2 2 * 5 /run.sh # 每月2号或者星期5的2点 星期和日同时存在,是或的关系
     0 2 2 6 5 /run.sh # 每年6月2号或者星期5的2点
     */5 * * * * /run.sh # 每隔5分钟执行一次
     0 2 1,4,6 * * /run.sh # 每月1号,4号,6号的2点
     0 2 5-9 * * /run.sh # 每月5-9号的2点
     * * * * * /run.sh # 每分钟
     0 * * * * /run.sh # 每整点
     * * 2 * * /run.sh # 每月2号的每分钟

周的范围比较特殊,计划任务范围0-7,0和7都代表周日,其他数字几代表周几

定时备份

# crontab -e
0 2 * * 1 /usr/bin/tar -zcf /tmp/etc.tar.gz /etc
每周一的凌晨2点把/usr/bin/tar目录备份(打包压缩)到/tmp目录下,命名为etc.tar.gz

每次备份时,生成的文件名称是一致的,后面备份的文件就会把前面备份的文件进行覆盖
为解决这个问题,可以在备份文件,按备份时间作为备份文件的名称
# crontab -e
0 2 * * * /usr/bin/tar -zcf /tmp/etc-$(date +"\%Y\%m\%d").tar.gz	/etc

在编写计划任务时,%的意思是开启新一行,所以前面必须添加转义字符,否则计划任务不能正常执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值