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

你可能感兴趣的:(#,Linux,linux,运维,服务器)