zoukankan      html  css  js  c++  java
  • 初学Linux (Linux_note)


    根目录:/
    /root: 存放root用户相关文件
    /home: 存放不同用户的相关文件
    /bin: 存放常用命令的目录
    /sbin: 要具有一定权限才可以使用的命令
    /mnt: 默认挂载光驱和软驱的目录
    /etc: 存放配置相关文件
    /var: 存放经常变化的文件
    /boot: 存放引导相关的文件

    换源
    software-properties-gtk


    查看各个分区挂载容量,那么输入:【df -h】,那么此时即可查看了的

    显示当前在哪个目录下: pwd

    7个运行级别
    0:关机
    1:单用户(找回丢失密码)
    2:多用户无网络服务
    3:多用户有网络服务
    4:保留
    5:图形界面
    6:重启

    (系统运行级别的配置文件/etc/inittab)
    修改/etc/inittab文件中的
    id:3:initdefault , 将3改为5 ,重新启动系统;
    命令init[012345]
    init 3 多用户有网络服务
    init 5 图形化
    init 0 关机

    忘记密码修改操作:
    开机——> 在引导是输入 回车Enter ——> 看到一个界面输入 e ——> 看到一个新界面 选中第二行(编辑内核)再输入e ——> 在这行最后输入 1(空格 1)在输入回车 -> 再次输入b进入到单用户模式 passwd root 修改root密码

    添加用户:
    useradd Diyo
    useradd -d /home/'目录' diyo 创建用户diyo指定目录
    useradd -g 组名 用户名
    设密码:
    passwd Diyo

    userdel 删除用户
    userdel -r 删除用户及其家目录

    usermod -g 组名 用户名 改变用户的用户组
    usermod -d 目录名 用户名 改变该用户登录的初始目录

    查看用户信息
    id 用户

    组管理和权限管理
    组的创建
    groupadd policeman
    groupdel
    修改文件所在组
    chgrp
    chgrp 组名 文件名
    chgrp -R 组名 文件夹 修改目录下的所有文件和目录所有组
    修改用户所在组
    usermod -g 组名 用户名 改变用户的用户组
    usermod -d 目录名 用户名 改变该用户登录的初始目录
    权限管理:(-:普通文件,d:目录,l:软链接,c:字符设备【键盘,鼠标】,b:块文件,硬盘)
    权限分为三种:r可读 用4表示,w可写 用2表示,x可执行 用1表示
    -rw-r--r--. 1 Diyo works 10 7月 2 00:32 mytest1.java
    - 文件类型
    rw- 文件所有者Diyo对该文件的权限
    r-- 文件所在组works对该文件的权限
    r-- 其它组的用户对该文件的权限
    修改权限chmod
    方式一:+、-、=变更权限
    u:拥有者 g:拥有组 o:其他组 a:所有人
    chmod u=rwx,g=rx,o=rx 文件
    chmod u-r
    chmod g+w
    chmod a=rwx
    方式二:r=4 w=2 x=1 - 数字变更
    chmod 755 文件
    修改文件所有者:
    chown
    chown 用户名 文件名


    查看所有组信息 cat /etc/group
    查看所有用户信息 cat /etc/passwd
    口令配置文件(密码) cat /etc/shadow
    whoami

    用户退出登录的方法有以下三种:
    1、在shell提示符下输入 exit 按回车确认
    2、在shell提示符下输入 logout 按回车确认
    3、按快捷键crtl+d (此方法同logout效果)


    vim编写C、C++程序过程(以hello world为例):
    1、vim hello.c/hello.cpp。
    创建hello.c/hello.cpp文件,并进入vim界面;
    2、键入i,进入输入模式。
    3、编写hello.c/hello.cpp程序。
    4、先按Esc键,退出输入模式;然后,按Shift+:键,进入命令模式。输入wq,保存并退出。
    5、编译hello.c/hello.cpp。
    5.1、对于C程序:用gcc hello.c便可编译;
    5.2、对于C++程序:用g++ hello.cpp可编译。编译后,均生成a.out的可执行文件;
    6、键入指令"./a.out",运行程序。
    7、在Terminal上显示"hello world"即成功。


    pwd 显示当前工作目录
    cd 改变目录

    ls 列出文件和目录
    ls -a 显示隐藏文件
    ls -l 显示长列表格式
    ls -al
    ls -lh 按人查看

    mkdir 建立目录
    mkdir -p test/t11/t1 递归创建目录
    rmdir 删除空目录
    rmdir -p 递归删除
    touch 建立空文件

    cp 复制命令
    cp 强制复制
    cp -r dir1 dir2 递归复制命令(复制子目录信息)

    mv 移动文件和改动文件文件名
    rm 删除文件和目录
    rm -rf * 删除文件所有内容(包括目录和文件)r递归 f强制

    ln 建立符号连接
    ln -s 源 目录
    ln -s /etc/inittab inittab (inittab指向实际文件/etc/inittab)

    cat -n显示行数


    more 显示文件内容,带分页
    less 显示文件内容带分页(看大文件建议)
    ctrl+f
    ctrl+b
    =
    空格space:向下翻一页
    回车Enter:

    重定向命令:
    > 输出重定向 覆盖
    >> 追加
    ls -l > a.txt 列表的内容写入文件a.txt中(覆盖写)
    ls -al >> a.txt 列表的内容追加到文件a.txt的末尾
    从文件中输入信息database_program < database_data
    cat 文件1 > 文件2
    echo "内容" >> 文件

    echo 输出内容到控制台
    echo $PATH 输出变量
    echo "hello" 输出文本

    head 指令 显示文件的前面部分(默认显示前十行)
    head -n 5 查看前5行
    tail 指令 显示文件的后面部分(默认显示后十行)
    tail -n 5 查看后5行
    tail -f 实时追踪文档的所有更新,工作经常使用

    history 显示多有历史指令
    history 10 显示最近10个指令
    !数字 执行第多少指令

    date 日期类指令
    date 显示当前时间
    date "+%Y-%m-%d"
    date "+%Y年%m月%d日"
    date "+%Y年%m月%d日 %H:%M:%S"
    date -s 设置时间
    date -s "2019-07-10 18:34:56"

    cal 日历指令
    cal 显示当前日历
    cal 2019 显示一整年日历

    搜索查找类:
    find:查找文件
    find /home -name 文件名 搜索范围/home 按文件名-name 文件名 查找文件
    find /opt -user 文件名 按文件的拥有者查找
    find / -size +20M 查找目录下大于20M的文件
    find / -size -20k 查找目录下小于20K的文件
    find / -size 20M 查找目录下等于20M的文件
    find / -name *.txt 按文件名通配符查找
    locate:快速定位文件路径
    locate 搜索文件
    locate 特别说明:第一次运行前必须使用updatedb指令创建locate数据库
    updatedb 创建locate数据库

    grep指令和 管道符号|
    grep 匹配(查找)字符串
    在文本中查询内容(-n显示行数) grep -n "abc" aaa.txt 在aaa.txt中查询abc
    grep -n 显示行号
    grep -i 忽略大小写
    | 管道命令:表示将前一个命令的处理结果传递给后面的命令处理


    压缩和解压缩
    gzip/gunzip gzip用于压缩/gunzip用于解压缩
    gzip 文件 (压缩文件,只能将文件压缩为*.gz文件)(压缩后原来文件不保留)
    gunzip 文件.gz 文件进行解压缩
    zip/unzip zip用于压缩/unzip用于解压的,在项目打包发布中很有用
    zip 可以是文件和文件夹
    zip -r a.zip /home 递归压缩/home成a.zip
    unzip
    unzip -d 解压后存放的目录
    tar 打包指令 最后打包的文件是 .tar.gz的文件
    -c 产生.tar文件
    -x 解压.tar文件
    -z 打包同时压缩
    -v 显示详细信息
    -f 指定压缩后的文件名
    tar -zcvf 压缩(打包)a.tar.gz tar -zcvf a.tar.gz a.txt
    tar -zcvf a.tar.gz /home/
    tar -zxvf 解压到当前目录 tar -zxvf a.tar.gz
    解压到指定目录 tar -zxvf a.tar.gz -C /home


    man命令相当于dos下的help
    man grep 查询grep命令帮助


    Linux 磁盘分区、挂载

    crond任务调度
    crontab定时任务调度
    -e 编辑crontab定时任务
    -l 查询crontab任务
    -r 删除当前用户所有的crontab任务
    service crond restart 重启任务调度
    crontab 可以用来定时调度 某个程序或者某个脚本
    ---------crontab-----------------crontab---------------crontab----------
    crontab默认情况下是不执行开启日子的,所以一开始写完后,不能执行,想查看日志,却找不到。所以先开启定时任务的日志来查看
      修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf 文件中的 #cron.* 前的 # 删掉;用以下命令重启rsyslog服务:
    service rsyslog restart;
      然后再重启crontab服务:
    service cron restart;

      网上很多人说开启,停止或者重启contab服务用命令 service crond restart,执行这个命令会报出 unrecognised service ,这里吧 crond 改成 cron 就可以了。
      之后,在这个位置 /var/log/cron.log 就可以查看定时任务的文件日志文件了;
      下面这个命令还可以查看crontab的状态
    service cron status;


    1 编写脚本 放入家目录
    vi pi.sh
    内容为
    #!/bin/bash
    . /home/briup/.bashrc
    . /etc/profile
    JAR_FILE="/Users/zhaojing/Documents/hadoop-3.0.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar"
    echo "starting......"
    date
    yarn jar $JAR_FILE pi 10 1000
    echo "==============================="


    ------------------------
    #!/bin/bash
    HADOOP_USER_NAME=hj_dengzhiyong
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/briup/software/jdk/bin:/home/briup/software/hadoop/bin/:/home/briup/software/hadoop/sbin
    JAR_FILE="/home/briup/software/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar"
    echo "starting......"
    date
    yarn jar $JAR_FILE pi 10 1000
    echo "==============================="

    解释:行6 shell脚本必须写的内容
    行7 行8 crontab任务中不会引用环境变量故有些命令会失效,此处意思为引入环境变量
    行9 定义变量JAR_FILE内容为某个jar包,例如 pi的jar包
    行10 运行时输出start....
    行11 输出时间
    行12 提交pi任务 因为默认情况下cron 输出结果会通过邮件方式发送 我们没有邮件系统故结果直接重定向到某个文件中


    2 脚本编写好后新建crontab任务(命令)
    crontab -e
    输入命令后进入 vi 编辑器 意为部署某个任务
    该编辑器中每行内容结构如下 代表在某年某月某日某分执行某个命令
    * * * * * command path (~/.bashrc)

    */1 * * * * /bin/bash /home/briup/pi.sh >> /home/briup/log.txt


    写完后保存退出
    -e:编辑该用户的计时器设置;
    -l:列出该用户的计时器设置;
    -r:删除该用户的计时器设置

    解释:
    字段名称 说明 取值范围
    分钟 每小时的第几分钟执行 0-59
    小时   每日的第几个小时执行 0-23
    日期 每月的第几天执行 1-31
    月历 每年的第几月执行 1-12
    星期 每周的第几天执行 0-6
    命令名称 欲执行的命令及参数

    符号  说明
    * 表示任何时刻
    , 表示分割
    - 表示一个段,如第二段里: 1-5,就表示1到5点
    /n 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

    以下是常用的一些时间间隔写法
    15 05 * * *    每天的05:15 执行
    0 17 * * 1 每周一的 17:00 执行
    0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
    0 21 * * 1-6   周一到周六 21:00 执行
    */10 * * * *        每隔10分 执行
    * 1 * * *         从1:0到1:59 每隔1分钟 执行
    0 */1 * * *        毎时0分 每隔1小时 执行
    2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 执行

    3 查看服务状态
    service cron status
    -------------------crontab-end----------------------------


























  • 相关阅读:
    程序跳过UAC研究及实现思路(两种方法,现在可能都不行了)
    getch(),getche(),getchar()的区别
    命令行版扫雷(vc08)
    类成员函数指针的特殊之处(成员函数指针不是指针,内含一个结构体,需要存储更多的信息才能知道自己是否virtual函数)
    WCF与Web API 区别
    扩展方法库
    开源Dubbox
    AngularJs应用页面
    浅谈可扩展性框架:MEF
    AngularJs + ASP.NET MVC
  • 原文地址:https://www.cnblogs.com/Diyo/p/11167574.html
Copyright © 2011-2022 走看看