Linux学习笔记——常用命令

前提:首先安装虚拟机以及Ubuntu系统,其中遇到 主机支持Inter VT-X但禁用 的提示需要进入bios将visual设置打开

接着根据需要来安装需要的软件,这里先安装vim以及gcc

一、 目录的常用命令:

1.  ls 查看当前目录下的内容

ls -l  列出长数据串,包含文件的权限和属性

ls -a  (all)  列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来

ls -d   仅列出目录本身,不列出目录内容

ls -R   连同子目录的内容一起递归列出(改目录下的内容全都会显示出来)

ls file1 file2   列出f1和f2两个目录文件中所包含的目录项,并隐含指出按英文字母顺序列表

2. cd 进入/退出目录

3. mkdir 建立新的文件夹

mkdir dir{1,2,3}   mkdir dir1 dir2 dir3 创建多个目录

mkdir -p mp1/mp2/mp3   创建联级目录

4. cp file1 目标目录  -r    递归持续复制,用于目录的复制

cp  file1(原文件)  file2(复制后的文件)  用于文件的复制

cp -i file1 file2  若目标文件已经存在时,在覆盖时会先询问

cp -u file1 file2  目标文件与源文件有差异时才会复制  

cp -a file1 file2  将文件的特性一块复制

cp -p file1 file2  和-a差不多,常用于备份

5. mv file 目标目录     移动文件至目标目录

也可以移动很多文件,只要最后是目标文件夹,中途不出现目录就行

而且linux没有改名命令,需要在移动的时候改名

如果只想单单改名的话就只在当前目录mv file1 file2

6. rm 文件   删除文件

rmdir 目标空文件夹     只能删除空的文件夹

rm -r 目标文件夹          (递归)删除非空文件夹

二、文件的常用命令

1.  echo xxx 重定向 > 覆盖原文件

echo xxx 重定向 >> 追加原文件

2.  查看文本内容

more filename    查看文件内容   ctrl b前翻  ctrl f 后翻

less filename   和more用法相同,但是看完最后一行内容不自动退出(more自动退出),需要按q才会退出

3. 查看很长文件的前x行和后x行

head -x filename 

tail -x filename  

4. 多个文件一起查看

cat file1 file2 ....

cat file1 file2 file3... >(>>) file4   把n个文件连到一块成为file4

5.  grep 关键字 目标文件/目录文件        匹配文件中的行

6.   more file | grep 关键字          将要输出的内容交给grep先匹配再输出 

m

 

三、文件的压缩和打包

打包和压缩是不一样的,打包(tar)是把很多小文件放在一起,容量不变,压缩是用算法将文件大小容量变小

1. 打包和解包 

打包: tar cfv xxx.tar 目标文件  (其中cfv分别指create/file/view? 能看到过程 不想看到过程就把v去掉)

解包:tar xfv xxx.tar 

2. 打包+压缩,解压+解包

一般都一起用

 

四、文件的查找

1. 根据文件后缀名找   find 目标目录/*.后缀

2.

 

五、Liunx系统命令

多用户多任务

1. whoami 显示当前的用户          who  显示谁在线

2. su - 用户名       切换用户

su后加-的话不仅账户切换过去了,环境变量什么的也都切换过去了,不加-的话,仅仅使用这个用户的权限,不使用其他

3. free查看内存

4. top 查看资源管理器

5. ps -aux  查看进程            ps -aux | grep 关键字    查看关键字的进程

6. kill  进程号        杀掉进程,root身份运行 

pkill 进程名        通过进程名杀进程,注意杀掉的是 *进程名*  的进程

 

六、文件的挂载

 

七、命令模式下的光标移动快捷键

(行数从上往下数)

 

八、Linux的用户管理

1. 添加组

sudo -s  将用户身份提升为管理员

groupadd  组名      添加组(系统自动分配id)

groupadd  -g  id   组名       添加组(自己指定id)

more /ect/group  进行查看

2. 修改组

groupmod -g  新id  原组名 

groupmod -n   新组名  原组名

3. 删除组

groupdel  组名

 

4. 添加一个用户

useradd  用户名   

添加一个用户会自动添加一个与用户同名的组

所以我们添加用户的时候指定组

useradd  用户名 -g 原先存在的组名

useradd  用户名 -d 家目录         修改家目录

新建的poly也属于1002组  所以显示组的时候不会显示poly

5. 修改用户

usermod -g 要移动到的组名 要移动的组名         移动用户去别的组

6. 删除用户

userdel 用户名

 

九、权限管理

1. 读(read 4)、写(write  2)、执行权限(excute 1)

rwx 7          -wx 3

rw- 6          -w- 2

r-x 5           --x

r-- 4

2. 用户的三种身份

主人user   同组group  不认识other  (u 7  g 5  o 5)

3. 修改权限的办法(两种)

相对法和绝对法

相对法:在原有权限基础上,对不同的角色进行权限的加/减

1. chmod u+/- r/w/x  文件名

先写一个小脚本test.sh

ll 查看文件权限,这里可以看到test.sh的user权限是rw 不可执行

此时修改权限 chmod u+x test.sh 此时文件就有了执行的权限     ./test.sh  执行一下

如果将此文件的权限变成 ---- -wx --x,需执行 chmod u-rwx test.sh   / chmod g-r+wx test.sh  /  chmod o-r+x test.sh

2. 修改一个文件的主人和组

chown 新用户 文件

chgrp 新组名 文件

 

绝对法:不需要考虑之前的角色以及对应的权限,直接指定最终的各角色权限

比如上面的例子,如果将test.sh修改回原来的权限,只需要

chmod 744(自己计算)  test.sh 

适合改动比较大的

 

十、rpm软件管理包

三种安装软件方法 rpm/yum/软件编译

rpm

red hat package manager是一个开放的软件包管理系统

RPM有五大功能:安装卸载升级查询验证

RPM包名称有其特有的格式 name-version.type.rpm

rpm -i <rpm file name>     安装特定的软件

rpm -e <package name>    卸载软件

rpm -q <package name>    查询特定的软件包是否在系统里被安装

rpm -U <rpm file name> 升级

yum

管理rpm包的后台程序,用python写成

 

十一、安装mysql

sudo apt-get install mysql-server mysql-client

安装完成过后需要切换到root用户下才能登录,而且默认安装后mysql是没有密码的,此时需要进入mysql里修改密码

1.update mysql.user set authentication_string=PASSWORD(“8888″) where User=’root’ and Host ='localhost';

2.update mysql.user set plugin=”mysql_native_password”;

3.flush privileges;

4.quit;

然后再重启mysql服务 sudo /etc/init.d/mysql stop/start

此时就能用密码登录mysql了

****MySQL安装后的目录结构分析(此结构只针对于使用apt-get install 在线安装情况):

数据库存放目录: /var/lib/mysql/

相关配置文件存放目录: /usr/share/mysql

相关命令存放目录: /usr/bin(mysqladmin mysqldump等命令)

启动脚步存放目录: /etc/rc.d/init.d/


十二、shell入门

首先打开一个终端,在终端里能做的操作,以及在终端里执行的命令,都能同样的写到.sh脚本里去(参照windows下的.bat文件来理解)

1.现在来写一个最简单的脚本文件

#!/bin/bash    //将调用bin下的bash解释
echo first shell
cd save    //进入主目录下的文件夹
ls         //列出目录下的内容

2.自定义变量/系统变量/命令值返回变量

#!/bin/bash
age=19
name=lx
echo $name is $age years old
#!/bin/bash
echo $HOME
echo $USER
#!/bin/bash
var1=`date +%y%m%d`
echo $var1
date +%y%m%d

3. 命令表达式/文件判断表达式

格式 [-d ./filename]

-d 判断文件是否存在且是目录

-f 文件是否存在且是文件

-e 是否存在  -r是否可读  -w是否可写  -x是否可执行

#!/bin/bash
if mkdir test
then
        echo yes
else
        echo fail
fi
#!/bin/bash
if [ -d ./test ]
then
        echo dir exists
elif mkdir test
then
        echo ok
else
        echo fail
fi
     

 

十三、定时任务

crontab -e   进入任务编辑状态

格式:*****(分时日月周) 命令

例如: 21*** aaa # 每天1:02执行aaa命令      */2**** bbb #代表每两分钟执行bbb命令

01 14 * * * date >> save/c.txt   //14:01分向c.txt写入时间
*/1 14 * * * date >> save/c.txt   //在14时每一分钟都向txt写入时间

执行结果会被发送到root邮箱里,如果不想收到定时任务的信息,可以把输出重定向

21*** aaa >/dev/null 2>&1

 

十四、数据库的定期备份

目标:每天三点,导出sql,压缩,并按日期存储在/data 下

知识:crontab定时任务 mysqldump导出 tar压缩 按日期创建文件

1.按日期创建文件

date +%Y%m%d%H%M

date -d "-3 minutes" +%Y%m%d%H%M

2.mysqldump导出

注意mysqldump的命令所在文件夹 (我这里是/usr/bin)

执行: /usr/bin/mysqldump -uroot -p(密码)  -B(数据库名) > /data/filename.sql

3.tar压缩

tar cfvz /data/文件名.tar.gz  /data/filename.sql

4.定时任务

*/1 **** /bin/bash /data/bak.sh

#bak.sh

#!/bin/bash
#格式化时间
tod=`date +%Y%m%d%H%M`
old=`date -d "-3minutes" +%Y%m%d%H%M`    

#压缩
/usr/bin/mysqldump -uroot -p8888 -B sys > /data/sys.sql  
tar cfvz /data/$tod.tar.gz /data/sys.sql

#把老的文件删除
rm -rf sys.sql

#将三分钟之前的文件删除
if [ -d /data/$old.tar.gz ]
then 
    rm -rf /data/$old.tar.gz
fi


#定时任务 每一分钟执行一下bak.sh文件
*/1**** /bin/bash /data/bak.sh

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值