初学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----------------------------