前提:首先安装虚拟机以及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 -e 卸载软件
rpm -q 查询特定的软件包是否在系统里被安装
rpm -U 升级
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
来源:http://www.icode9.com/content-3-129201.html