Linux 快速上手

Liunx

  • 不同的操作系统 Linux、Unix、Windows…
  • Linux的不同的发行版本: debian、ubuntu、deepin、rethat、centos、fedora等等

Linux系统安装

可以参考我的安装Linux系统的文章,或者看网上找下安装步骤

Linux命令

命令行基础操作:
1. 命令行
[root@linux01 Desktop]#
root 用户、linux01 主机名、 Desktop 用户所在目录、# 表示root用户($ 代表普通用户)
2. 查看历史命令
history
或者使用 ↑、↓按键获取历史命令
3. tab补全命令
使用tab按键补全输入的命令、文件名等
4. 清屏 
clear 或 ctrl+l快捷键
5. 查看当前位置
pwd
基础命令
  • ls
  • cd
  • touch
  • mkdir
  • rm
  • cp
  • mv
  • cat
  • more
  • less
  • head
  • tail
  • reboot
  • shutdown

vi编辑器使用

网络配置

  • 配置主机名
    查看主机名
$ hostname

修改主机名 重启后失效

# hostname my-hostname

修改主机名 重启后生效

# vi /etc/hostname 
修改主机名
  • ip配置
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改或增加一下配置 (网段根据具体情况定,我这里是虚拟机)
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.81.101
PREFIX=24
GATEWAY=192.168.81.2
DNS1=192.168.81.2

重启网络服务

systemctl restart network
systemctl enable network
  • 映射文件
# vi /etc/hosts
192.168.81.101  my-hostname

验证网络配置

验证是否可以访问外网,或者局域网内的主机
ping www.baidu.com

用户和用户组

  • 查看用户
$ cat /etc/passwd​ root​ ​ ​:x:0:0:root:/root:/bin/bash
​ root 用户名
​ x 密码
​ 0 用户id
​ 0 用户组id
​ root 用户描述
​ /root 用户家目录
​ /bin/bash 用户所用的shell​ 当创建一个用户,系统会默认创建一个和用户名相同的用户组
  • 查看用户组
​ $ cat /etc/group
  • 用户类型
在 Linux 系统中,有以下几种常见的用户类型
超级用户(root 用户):具有最高权限,可以对系统进行任何操作,包括修改系统设置、安装软件、管理文件和用户等。
普通用户:这类用户只能执行有限的系统操作,无法修改系统设置或管理其他用户。他们的文件和目录通常位于/home 文件夹下。
系统用户:用于运行系统服务或守护进程的特殊用户。这些用户通常不允许直接登录系统,而是通过服务进程来执行任务。
组用户:组是用户的集合,可以将多个用户归为一个组,以便于管理和共享文件和权限。
通过使用用户和组的概念,Linux 系统可以实现对不同用户的访问控制和权限管理,提高了系统的安全性和可管理性。
  • 创建用户
# useradd xiefei
# passwd  密码			设置或修改密码
  • 删除用户
# userdel -r xiefei		彻底删除用户
  • 创建用户组
#groupadd	用户组
  • 向用户组添加用户及删除用户,查看用户所属用户组
# gpasswd -a hadoop mygroup
# gpasswd -d hadoop mygroup
# groups hadoop
  • 切换用户
$ su -			切换为root用户,同时切换工作目录
# exit			退出当前用户
$ su 			切换为root用户$ su hadoop   切换为hadoop
$ su - hadoop   切换为hadoop   ,并切换工作目录su 和 su - 的区别:前者切换用户, 后者切换用户及用户环境# exit 退出用户

用户文件和目录权限

查看文件权限

ls -l /etc/sysconfig
显示内容如下:
-rw-r--r--. 1 root root  429 Jan 24 03:22 authconfig
drwxr-xr-x. 2 root root   43 Jan 24 03:20 cbq
drwxr-xr-x. 2 root root    6 Nov  6  2016 console
-rw-r--r--. 1 root root  150 Nov 23  2016 cpupower
-rw-------. 1 root root  110 Mar 31  2016 crond
-rw-------. 1 root root 1390 Nov  6  2016 ebtables-config
-rw-r--r--. 1 root root   73 Nov 12  2016 firewalld
lrwxrwxrwx. 1 root root   17 Jan 24 03:20 grub -> /etc/default/grub第一个字符: d:目录 、-:文件、l:软链接
第一组rwx:所属用户(u)的权限 
第二组rwx:所属用户组(g)的权限
第三组rwx:其他用户(o)的权限字母表示:r 可读(read)、w	可写(write)、x	可执行rwx  可读可写可执行	r-x	可读可执行
数字表示:rwx 也可以表示为  111	7 ​rw-				  110	6​r-x				  101	5​r--				  100	4
  • 修改权限
# chmod u+x test.c  为所属用户添加执行权限
# chmod g+w	test.c	为所属用户组添加写权限
# chmod o-x test	删除其他用户的执行权限# chmod 444 test.c 修改为只读
# chmod 764 test.c	修改为可读可写可执行
# chomd 777 -R test/ 递归修改test的所有文件权限
  • 修改所属用户
# chown hadoop msg.txt  把msg.txt修改为hadoop所有
  • 修改所属用户组
# chgrp hadoop msg.txt
  • 修改所属用户及所属用户组
# chown hadoop:hadoop -R myDir/
  • 向用户组添加用户及删除用户,查看用户所属用户组
# gpasswd -a hadoop mygroup
# gpasswd -d hadoop mygroup
# groups hadoop

sudo权限

# visudo
输入/root搜索
然后在root ALL。。。下面配置普通用户的sudo权限
root    ALL=(ALL)       ALL
user01  ALL=(ALL)     NOPASSWD: ALL解释:
第一个ALL是指网络中的主机,它指明user01用户可以在此主机上执行后面的命令。
第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。
最后一个ALL是指命令。

使用sudo权限

$ sudo vi /etc/hosts

常见命令

  • 管道符 |
    把前一个命令的输出结果传递给后面的命令处理
# ls -la /etc | more
  • 使用grep过滤
$ ls -l / | grep etc					查看/etc的权限
cat /etc/passwd | grep 'root'			查看/etc/passwd包含‘root’的行
ls -la /etc | grep config				查看/etc下, 包含‘config’的行
# ll /etc/ | grep 'sysconfig'	查看当前目录的包含“sysconfig”的文件
# ifconfig | grep 'inet'  		查看ip
  • 覆盖 >, 追加>>
# ll > test.txt 	以长格式显示当前目录 并覆盖到test.txt文件中
# ll >> test.txt	以长格式显示当前目录 并追加到test.txt文件中
  • wc 单词行数统计
# wc -l /etc/passwd					统计/etc/passwd的行数
# wc -w test.c						统计test.c的单词数
#ls /etc/sysconfig/ | wc -w			统计/etc/sysconfig,有多少个文件
  • 统计文件或目录大小
# du -sh /lib						显示目录的大小
  • 搜索命令 find
    语法格式:find 范围 条件

    • 按文件名·

      # find  / -name  init
      模糊查询带有关键字的:   $  find  /etc/ -name *work
      查找关键字开头的文件:	  $  find  /etc/ -name init*
      匹配单个字符 		   	 $  find /etc/ -name ???work
      不区分大小写匹配	    $  find /etc/ -iname ???work
      
    • 按文件大小

      指定方式:+大于,  -小于,不加符号表示等于
      $  # find /etc/ -size  +2M
      
    • 按所属用户,用户组

      # find /  -user hadoop    
      # find / -group hadoop
      
    • 按文件类型

      # find /etc/ -name *work -type f	文件
      # find /etc/ -name *s -type d		目录
      
  • 压缩解压

tar压缩解压为 .tar.gz
-C	指定dir
-z, --gzip, --gunzip, --ungzip   filter the archive through gzip
-c, --create               create a new archive
-x, --extract, --get       extract files from an archive
-v, --verbose              verbosely list files processed
-f, --file=ARCHIVE         use archive file or device ARCHIVE
-f后面必须跟上要处理的文件名
  • 压缩解压
 # tar -zcvf test.tar.gz ./				将当前目录压缩为test.tar.gz# tar -zxvf test.tar.gz -C /opt		将压缩文件test.tar.gz 解压到 /opt目录

压缩解压为.tar

tar -cvf content.tar Main.java msg.txt 将Main.java msg.txt压缩为 context.tar
tar xvf content.tar -C  test	将content解压到test文件夹下

压缩解压: .gz 不保留源文件

压缩
$ gzip hello.mp4 
解压
$ gunzip hello.mp4.gz
  • date 命令
    • 显示系统时间
    date
    Mon Jun  5 15:11:44 CST 2017
    
    • 带时区的时间
    date -R 
    Mon, 05 Jun 2017 15:14:44 +0800
    
    • 格式化日期
    date  '+%Y-%m-%d %H:%M:%S'
    2017-05-02 11:20:10
    
    • 设置时间
    date -s "2016-12-08 10:43:00"
    
    • 校准时间
    sudo ntpdate ntp.api.bz
    ntpdate ntp.api.bz 为网络时间服务器
    

rpm包管理

  • 查看安装软件
$ rpm -qa | grep jdk
​查看某个文件属于哪个rpm包安装的
​#  rpm   -qf /etc/ntp.conf
  • 安装
# rpm  -ivh   tree-1.5.3-3.el6.x86_64.rpm
用法: rpm -ivh 软件名(.rpm)
选项:-i install 代表安装、-vh 显示详细的进度 
  • 卸载
选项: -e(--erase) 代表卸载  、--nodeps  (不验证依赖卸载)
# rpm -e tree-1.5.3-3.el6.x86_64 --nodeps
  • 卸载自带jdk
$ sudo rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 --nodeps
$ sudo rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64  --nodeps

yum

方便、快捷、自动解析依赖,需要连接外网

  • 查询
#  yum list       //查看yum源上拥有的软件
$ sudo yum list  installed  | grep tree		相当于rpm -qa | grep tree
  • 安装
    选项:install 表示安装,跟yum源的软件名
    选项:-y , 表示直接自动确认
# yum install httpd-devel.x86_64
# yum -y install httpd-devel.x86_64
$ sudo yum install tree
  • 卸载
# yum  -y remove httpd-devel.x86_64

安装jdk,配置环境变量

  • 创建两个目录
$ sudo mkdir /opt/software   //安装包的存放目录
$ sudo mkdir /opt/modules    //解压安装的目录
  • 修改目录的所属用户及所属用户组
$ sudo chown hadoop:hadoop /opt/software/ /opt/modules/
  • 上传并解压jdk
$ tar -zxvf /opt/software/jdk-8u112-linux-x64.tar.gz -C /opt/modules/
  • 配置环境变量
# vi /etc/profile 
末尾添加
​#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
  • 使生效
#source /etc/profile
  • 检查是否成功
java
javac
java -version

系统管理命令

  • top 查看系统资源
相当于任务管理器
每隔3秒更新一次
按q或ctrl+c退出浏览状态
  • 查看系统资源
vmstat 2 5
展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
2 表示间隔时间
​5 表示采集次数
  • free 查看内存信息
选项:-m, 就是以MB格式显示
free -h
free -m
  • 查看硬盘分区信息
df -l 
  • ps -ef 查看系统进程
ps -ef | grep crond
  • 查看java进程
jps
  • 杀死正在进行的进程
kill -9 进程id
  • ifconfig 查看网络信息
  • 检测网络连接
ping 另一台主机
  • 查看网络端口
netstat -antp
选项:
-t     #监控tcp协议的进程
​-l 	   #listenning
​-n     #显示端口号信息
​-p     # 显示进程的PID

Crontab 任务调度

  • crontab命令
crontab -l   (list )   #查看目前的计划任务列表
crontab -r   (remove)  #删除计划任务
crontab -e   (eidt)    #编辑周期性计划任务
  • 查看进程服务, 如果停止可以启动
$ systemctl status crond
$ systemctl start crond
$ systemctl enable crond

调度语法

Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name command to be executed*    *      *            *             * 分钟 小时  天(of月)  月(of年)  星期(of周)
特殊字符
"*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
","分散的数字(不一定连续),如1,2,3,4,7,9。
注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。
实例)
  • 定时调度例子:
每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)
*/1 * * * * /bin/date  >> /root/Desktop/date.txt
每小时的第3和第15分钟执行command
3,15 * * * * /bin/cp /root/Desktop/date.txt /root/date.log
每天上午8-11点的第3和15分钟执行command:
3,15  8-11  *  *  *  command
每隔2天的上午8-11点的第3和15分钟执行command:
3,15  8-11  */2  *   *  command
每个星期一的上午8点到11点的第3和第15分钟执行command
3,15  8-11   *   *  1 command
每晚的21:30重启smb
30  21   *   *  *  /etc/init.d/smb restart
每月1、10、22日的4 : 45重启smb
45  4  1,10,22  *  *  /etc/init.d/smb restart
每周六、周日的1 : 10重启smb
10  1  *  *  6,0  /etc/init.d/smb restart
每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30  18-23  *  *  *  /etc/init.d/smb restart
每一小时重启smb
*  */1  *  *  *  /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启smb
*  23,0-7/1  *   *   *  /etc/init.d/smb restart
每月的4号与每周一到周三的11点重启smb
0  11  4  *  mon-wed  /etc/init.d/smb restart
每小时执行/etc/cron.hourly目录内的脚本
0  1   *   *   *     root run-parts /etc/cron.hourly
每天晚上18:00执行一次拷贝/home/uer01/2.log文件到/opt/software的任务
0 18 * * * /bin/cp /home/uer01/2.log /opt/software
每天晚上6点到第二天早上6点 每15分钟记录一次时间到/home/uer01/2.log文件中
*/15  18-23,0-6 * * * /bin/date  >> /home/user01/2.log
0,15,30,45  18-23,0-6 * * * /bin/date  -R >> /home/user01/2.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第14天 | 二叉树的前序、中序、后序遍历(递归+迭代法)

二叉树的理论基础:(二叉树的种类,存储方式,遍历方式 以及二叉树的定义) https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 二叉树的递归遍历 Leetcode对应的三道习…

我们应该解决哪些计算机网络中的问题,才能实现进程之间基于网络的通信呢?

ps:本文章的图片内容来源都是来自于湖科大教书匠的视频,声明:仅供自己复习,里面加上了自己的理解 这里附上视频链接地址:1.6 计算机网络体系结构(1)—常见的计算机网络体系结构_哔哩哔哩_bilibi…

YOLOv5中Ghostbottleneck结构shortcut=True和shortcut=False有什么区别

GhostBotleneck结构中的shodcutTrue和shorcutFalse的区别在干是否使用残差连接。当shorcuTrue时,使用残差连接,可以以加速模型的收敛速度和提高模型的准确率,当shorcuFalse时,不使用残差连接,可以减少模型的参数数量和…

what is `ContentCachingRequestWrapper` does?

ContentCachingRequestWrapper 是 Spring Framework 中提供的一种包装类,它扩展了 HttpServletRequestWrapper 类,用于缓存请求体的内容。 通常在处理 HTTP 请求时,原生的 HttpServletRequest 对象中的输入流 (getInputStream()) 只能被读取一…

Java玩转《啊哈算法》排序之桶排序

过去心不可得,现在心不可得,未来心不可得 目录在这里 楔子代码地址桶排序代码核心部分优缺点 完整代码演示 升级版核心代码完整代码演示 楔子 大家好!本人最近看了下《啊哈算法》,写的确实不错,生动形象又有趣&#x…

【多线程】多线程安全,为什么不安全,要怎么做保证其安全,实例

多线程安全是指在多线程环境下,对共享的数据进行操作时,保证这些操作能够正确、稳定地执行,不会导致数据不一致、异常等问题。多线程不安全通常是因为多个线程同时访问、修改了共享的数据,导致一些不可预料的结果。 一、多线程安…

训练自己的ai模型(一)学习笔记与项目实操

ai模型大火,作为普通人,我也想做个自己的ai模型 训练自己的ai模型通常需要接下来的的六步 一、 收集和准备数据集:需要收集和准备一个数据集,其中包含想要训练模型的数据。这可能需要一些数据清理和预处理,以确保数据…

Optional的使用(代替if判断是否为空)

Optional 前言 我的使用 package yimeng;import com.ruoyi.RuoYiApplication; import com.ruoyi.common.core.domain.entity.SysUser; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.*;SpringBootTes…

C语言-算法-拓扑排序

【模板】拓扑排序 / 家谱树 题目描述 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。 输入格式 第 1 1 1 行一个整数 N N N( 1 ≤ N …

OpenCV第 2 课 OpenCV 环境搭建

文章目录 第 2 课 OpenCV 环境搭建1.安装 Numpy2.从 Ubuntu 存储库安装 OpenCV3.验证 OpenCV 安装 第 2 课 OpenCV 环境搭建 1.安装 Numpy 每一张图像都有很多个像素点,这也导致了程序中会涉及大量的数组处理。Numpy 是一个 Python 的拓展库,它对多维数…

仿真机器人-深度学习CV和激光雷达感知(项目2)day7【ROS关键组件】

文章目录 前言Launch 文件了解 XML 文件Launch 文件作用Launch 文件常用标签实例--作业1的 Launch 文件TF Tree介绍发布坐标变换--海龟例程获取坐标变换--海龟自动跟随例程rqt_工作箱前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个…

LeetCode 每日一题 Day 51 - 53

670. 最大交换 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 108] 模拟&#xff1a…

mysql临时表简述

概述 业务中经常会对一些表进行聚合组装信息,然后筛选,有些表比较数据量大的时候,会对拖慢查询; 常用的mybatis的分页查询,在查询时会先count一下所有数据,然后再limit分页,即使分页也会有深度…

数据分析-Pandas如何用图把数据展示出来

数据分析-Pandas如何用图把数据展示出来 俗话说,一图胜千语,对人类而言一串数据很难立即洞察出什么,但如果展示图就能一眼看出来门道。数据整理后,如何画图,画出好的图在数据分析中成为关键的一环。 数据表&#xff…

「JavaSE」抽象类接口2

🎇个人主页:Ice_Sugar_7 🎇所属专栏:快来卷Java啦 🎇欢迎点赞收藏加关注哦! 抽象类&接口2 🍉接口间的继承🍉接口的应用🍉总结 🍉接口间的继承 和类的继承…

【每日一题】最长交替子数组

文章目录 Tag题目来源解题思路方法一:双层循环方法二:单层循环 写在最后 Tag 【双层循环】【单层循环】【数组】【2024-01-23】 题目来源 2765. 最长交替子数组 解题思路 两个方法,一个是双层循环,一个是单层循环。 方法一&am…

Structured Streaming基础--学习笔记

Structured streaming介绍 spark进行实时数据流计算时有两个工具: Spark Streaming:编写rdd代码处理数据流,可以解决非结构化的流式数据Structured Streaming:编写df代码处理数据流,可以解决结构化和半结构化的流式数据1,数据相关介绍 有界数据和无界数据 ①有界数据: …

yarn集群HDFS datanode无法启动问题排查

一、问题场景 hdfs无法访问,通过jps命令查看进程,发现namenode启动成功,但是所有datanode都没有启动,重启集群(start-dfs.sh)后仍然一样 二、原因分析 先看下启动的日志有无报错。打开Hadoop的日志目录 …

线程池中线程数量与队列大小参数的如何设置实践-基于QPS的计算公式

目录 概要 传统方式? 线程池理解? 基于QPS的设置思路? 总结? 概要 线程池是个既靠谱但又陌生的家伙, 像管家一样, 会踏踏实实的把你交代的任务完成, 但很死板, 没有自动安排人的能力, 需要你给它配好人手(线程实例)和承载容量(队列大小), 这些参数关系影响业务服务整体…

rabbitmq基础-java-5、Topic交换机

1、简介 Topic类型的Exchange与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。 只不过Topic类型Exchange可以让队列在绑定BindingKey 的时候使用通配符! BindingKey 一般都是有一个或多个单词组成,多个单词之间以.分割&#x…