Advertisement

Linux操作系统总结

阅读量:

Linux{
Linux是一种被广泛应用于服务器的操作系统。
硬件基础下的第一层软件是操作系统;应用软件需依附于操作系统而运行。

Linux 的特点 软件系统具有较高的安全性,并且完全开源 系统支持多用户环境,在任何用户的操作都不会干扰到其他用户 系统运行非常稳定,并且设计上非常高效 Java语言在大数据环境下默认兼容Linux系统

Linux的各种版本
Linux内核类似于安卓系统,并且通常无法直接访问
各个厂商根据Linux内核的不同而推出各自的发行版
Red Hat Premium Version是一个非常出色且免费的选择
CentOS 6.5则是一个非常出色且免费的基础版本
Ubuntu则提供了图形化界面,并且针对Ubuntu软件有丰富的选项

查看Linux系统的内部结构{
根据文档规定
Linux操作系统遵循万物皆文件的原则
根目录下有个专门用于存储配置文件的etc目录
每个用户都有一个独立的home目录
}
为了方便远程访问Linux服务器{
由于在传统的服务器环境中直接操作相对不便
直接进行操作同样不够便捷
因此开发了一系列专门用于连接和管理Linux服务器的各种客户端软件
}

连接方法[
要知道Linux的ip地址 用户名 密码
虚拟机和本地机 要能ping通
虚拟机开机默认是不启网卡
]
修改NAT 连接方式 [
NAT方式是给虚拟机一个块独立的网卡 稳定 ip不变
鼠标在虚拟机上右键- 》设置-》网络适配器 -》右侧选 自定义 vmnet8 保存
虚拟机-》编辑-》虚拟网络编辑器-》更改设置-》讲net8改成NAT模式 应用 确定退出
很多情况下改为 并没有生效 可以先改成桥接或其他 -》保存 然后再改回 -》保存
]
}
Linux的命令{
命令查询网址 http://man.linuxde.net/

cd ..返回父目录
cd ~进入家目录
cd / 进入根目录
绝对路径与相对路径有何区别
完整的绝对路径表示具体的文件位置
而相对路径则是基于当前工作目录来确定文件定位关系

浏览目录
使用ls -a命令可以列出隐藏文件
通过ls -R选项可以递归展开子目录
使用ll -l选项可以获得更多详细信息如文件大小

创建文件夹
mkdir
mkdir -p 创建多层文件夹

删除命令
rm 删除文件
rm -r 删除文件夹

复制指令
使用cp命令时,复制操作所涉及的路径必须明确指定为相对于当前目录的相对路径或绝对路径。
通过添加参数-r进行操作
通过参数-v指定目标位置时

移动操作可以重命名为mv 创建新文件Linux不考虑扩展名touch可以更新现有文件名称

vim文本编辑器
按住Esc键切换到编辑模式,并输入内容
完成后按下Esc键并退出当前操作
按住:键结合w和q组合键保存文件并退出
使用q!快捷方式快速强制退出
设置光标显示行号

获取当前文本内容
cat a>b 将a中的内容赋值给变量b
cat a>>b 将a中的内容追附加到变量b中
pwd 显示当前目录路径

归档压缩
使用tar -c指令执行 archiving 压缩
解压操作通常使用tar -x指令
-f 选项用于指定输入文件夹
-v 选项用于显示详细信息
当文件夹中包含z时执行 archiving 压缩;不包含z则执行 standard 压缩
通过tar -czvf <目标文件名>, 可以将多个文件一次性打包成一个 archives 文件
通过tar xzvf <目标名称>, 可以对 archives 文件进行解压到当前目录中
通过tar xzvf <目标名称> -C <目标目录>, 可以将 archives 解压到指定目录中

命令可以一起使用 例如 -wq 保存并退出
-cf 压缩文件

用户的操作{
只有管理员才能创建用户
useradd 用户名
passwd 用户名 设置密码
userdel 用户名 删除用户 正在登陆的用户不能删
userdel -f 用户名 强行删除
su 切换用户 默认切换到管理员
虽然用户删除 但是家目录还在
-rf 强删一个用户 包括家目录也删除 相当于清空与此用户的一切
会一步一步问你是否要删除 回答yes no确定是否删除
}
和用户组相关的文件{

显示用户相关信息 500以后才是自己创建的
/etc/passwd 密码
/etc/group 组
/etc/shadow
用以下的命令来搜索浏览用户
cat 浏览全部的组
tail 显示后十个组
grep 用户名 要搜的路径(/etc/group) 搜索该用户的分组编号
more 按百分比显示
}
组的操作{
只有管理员才能创建组
groupadd 组名 添
groupdel 组名 删
groupmod -n 改名
改后的名字 要改的组名
-h 帮助
将用户添加到组中 usermod -G 用户名
}
权限{
r 读 代表值为4
w 写 代表值为2
x 执行 代表值为1

一共有10个 - 每个符号都代表着特定的意义:第一个符号象征着文件类型(如d);前三个符号表示文件的所有者;中间三个符号显示用户组信息;最后三个符号记录其他相关者。

在反射中修饰符与之对应的固定数值相等

chown 改用户 文件名

chown 用户:组 文件名

chmod 修改用户的权限
[
1 通过数字来修改权限
2 可以通过具体的文件所属和权限修改
+ 代表添加权限 -代表删除权限
具体权限 x w r
执行 写 读
可执行文件变绿
文件所属 u g o a
u:user 文件所有者
g:group 文件所属组用户
o:other 其他用户
a:all 所有用户
]
如: chmod u+r xx.txt
chmod 777 xx.txt
}
shell{
Shell 用来和系统内部进行交互 可以理解为是一种语言
灵活 快捷 方便

Shell hello world[
echo 命令用于输出信息 ,类似于 syso 系统提供的工具
]
Shell文件[
指定 shell 版本,在文档的起始处添加说明以确保该脚本得以执行

符号标识代码注释

通过绝对路径引用文件名运行其内部命令时,请确保具有 execute 权限
使用 bash 命令强制运行目标文件
]
使用 echo 命令显示系统环境变量 PATH 的值

shell中的变量 {
变量名变成青色 变量值为红色
1直接使用字母为变量命令
2使用等号赋值 注意变量和等号之间不可以有空格 // str="aaa"
3使用变量名 {变量名} 引用变量名 用来引用变量 echo 变量名
array=(1 2 3 4) //数组定义
array[0]=32 //更改下标为0的元素
echo {#array[*]} // 输出数组的长度 echo {array[0]}"------" //输出下标为0的元素
echo {array[*]} // 输出所有的元素 } test{ -eq 相当于= -ne 相当于!= -gt 相当于> -gte 相当于大于等于 -lte 相当于小于等于 -not 非 -mod 求模 -lt 相当于< } 例如: if test a -eq b if [ a -gt 5 ]; #注意 []内部两端要有空格 if后面有分号
then echo 要执行的语句
else echo 要执行的语句
fi 以fi结尾if语句

do{

}
done 结尾do语句

if [];
then echo
elif []; then echo // elif后面有分号
elif []; then echo
...
else
fi

read类似于Java中的Scanner。-p类似于Print用于输出提示信息。例如,在命令行界面中输入:read -p "输入您的年龄" age //然后程序会提示用户输入年龄。echo $age

当变量时其后跟有注释或说明:)否则返回默认值:esac 表示结束 case 的反写

读取交互类型指令:
读取交互类型参数:
switch ($op) {
case 'D':
输出'用于删除';
break;
case 'U':
输出'用于更新';
break;
case 'S':
输出'用于查询';
break;
default:
输出'用于什么操作';
}

}
shell{
1 while 循环 :【

while [ i -lt 10 ] do done 注意 在变量自增的时候 如果直接 num+1 字符串拼接

num=((num+1)) #当数字计算
num=[num+1] //[]可以代替上面
例如:
num=1
while (( num<10 )) do echo num
num=((num+1))
done
输出1-10

利用循环创建目录 mkdir "dir"num 利用循环删除目录 rm -r "dir"num
单行注释 #
多行注释 <<!
...
!

2 for 语法【
for n in a b c d
do
echo $n
done
输出abcd

for((i=0;i<100;i++)) 或者 for i in {1..100}
do
echo $i
done
输出0-99 输出1-100

移除所有大小为零的文件。
分析:首先遍历每个文件;然后计算每个文件的大小,并将大小为零的标记出来;最后将这些标记的文件从列表中排除。

判断文件大小 cut -d ' ' -f 5 //按照空格截取 获取第五列属性
例如:
ls -l var.sh | cut -d ' ' -f 5

在循环等位置执行命令时点上时有歧义

在循环等位置执行命令的时候有歧义

以下删除空文件的代码

以下代码用于删除空目录及空文件夹
for fn in `ls` do if isdir fn
if [ (ls / fn | ls /) = "" ]
rm -r fn echo 删除空目录fn
fi
else
if [ (ls / fn | cut -d' ' -f5) = "" ]
rm fn echo 删除空文件fn
fi
fi
done

while : 是死循环
完成了一个 直到某个条件才结束循环的功能
exit!

依次创建文件夹直至用户选择退出程序。
打印提示信息:请指定创建目录路径(若要退出则输入 exit!)。
while true:
read -p 'input name : ' fn
if[ "fn" == "" ];//注意这个变量要加引号 判断字符串是否为空 then 输出信息:非法文件名 elif [ fn == "exit!" ]
then 输出信息:退出现在!
跳出循环
else 输出信息: mkdir dir
创建目录$fn
fi

}
创建函数结构
function{
1 编号为1的函数定义
function 函数名称 输入参数集 { 功能模块 }
例如以下所示:
function first() { 执行操作 echo "hello world!" }

function add(){
result=[1+2] //两个变量相加 echo result
}
2 调用函数 函数名 参数1 参数2
first //函数的调用 先声明后使用
echo (first)"sasasa" //输出函数 结果:hello worldsasasa add 1 2 结果:3 3 1 取第一个参
echo 输出结果 $(函数名取结果)
}
日期命令
date 能获得时间 没有毫秒级别的输出
格式化时间
date +"%m-%Y" //12-2017
date +"%s" //秒
date +"%N" //当前时间的纳秒部分
}
编写一个随机数的函数{
date 可以指定最大和最小

funcation random(){
min=1 max=2
time=(date +%s%N) num=[max-min+1] //区间
result=[time%num+min] //对一个数取余肯定小于这个数
echo $result
}
for i in {1..10}
do
random 5 10
done
}
定时任务{
系统按照指定的时间或者指定的时间段来完成相应的任务
crontab -l
crontab -e 编辑器 创建定时任务
crontab -r 删除所有的定时任务

          • conmand
            第一个*:minute: 表示分钟,可以是从0到59之间的任何整数。
            第二个*: hour:表示小时,可以是从0到23之间的任何整数。
            第三个*: day:表示日期,可以是从1到31之间的任何整数。
            第四个*: month:表示月份,可以是从1到12之间的任何整数。
            第五个*: week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
            第六个*: command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
            例如:
          • command //每一分钟执行一次
            3,15 * * * * command //每小时的第三分钟和第十五分钟执行一次
            3,15 8-11 /2 * * command //每隔两天的上午8点到11点的第3和第15分钟执行
            星号(
            )代表所以可能值;
            逗号(,)表示指定范围的值;
            中杠(-) 表示一个整数范围 例如2-6 2,3,4,5,6
            正斜线(/) 指定时间的间隔频率 可以和星号搭配使用
            例如 0-23/2 每两个小时执行一次
            */6 代表对应字段 每6 (M/h/d/m)执行一次
          • sleep 10; echo haha1 >>log
          • sleep 20; echo haha1 >>log
          • sleep 30; echo haha1 >>log
          • sleep 40; echo haha1 >>log
          • sleep 50; echo haha1 >>log
            每10s 执行一次
            tail -f 文件名 追踪文件内容 随文件变化而变化 动态的
            cat 是静态的
            echo haha >>log.haha //把haha追加到log.haha文件中
            }
            数组
            array(a b c)
            {array[0]} //根据下标取元素 {array[*]} //取数组中所有元素
            {#array[*]} //取数组长度 date d={date +"%Y-%m-%d %h:%M:%S"}
            2018-01-09 16:45:32

知识点 判断 循环 数组 日期 函数 定时任务
}
%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)
来自: http://man.linuxde.net/date

计算小数 c=( echo "a*$b"|bc ) //计算小数的乘法

==================================================================================================
软件的安装{
jdk
1 上传包
2 tar.gz 解压
3 配置环境变量 .bashrc(家目录下)
pwd 显示绝对路径
加入以下两行代码
export JAVA_HOME=pwd显示的路径
export PATH=PATH:JAVA_HOME/bin
配置好后别忘了 source .bashrc 重新编译生效
}
ssh免密登录{
对账户有限制
ssh 用户@ip地址
ssh 需要输入密码
公钥 私钥

步骤:

通过SCP工具实现远程密钥复制

使用SCP命令将文件传输至指定用户名账号

以下是具体的操作步骤(例子)

步骤一

步骤二

步骤三

步骤四

步骤五

全部评论 (0)

还没有任何评论哟~