Linux基础入门教程

Stella981
• 阅读 797

Linux基础入门教程

---------

Linux学习路径

Linux基础入门教程

Linux学习者,常常不知道自己改怎么学习linux:
Linux初级,也就是入门linux
前提是需要有一些计算机硬件相关的知识或是有一下计算机操作系统相关的理论知识
linux系统的安装
linux常用的命令的使用
linux用户和文件的管理操作
linux中一下常用软件的安装
linux中基础网络的配置管理
shell简单脚本的编写

Linux中级:
linux中服务相关的配置和搭建

linux高级:
linux程序开发
---------------------
参考的网址:
https://www.jb51.net/os/85895.html
---------------
ll 命令列出的文件的信息的7列信息的分析
文件类型及文件的rwx
硬链接数
文件的所有者
文件的所属组
文件的大小
文件的创建或修改的时间
文件的名称
----------------------------
软链接是创建了文件的快捷方式,
硬链接是copy了一份文件,硬链接文件的大小和
--------------
rwx:r可读权限:可以查看文件的内容,可以列出目录文件中的内容
w可写权限:可以修改文件内容,可以在目录文件中创建或删除指定的文件
x可执行权限:可以运行某个文件,或可以进入目录文件中
------------------
locate 查找文件比find速度更快一些
-----------
|| 或:第一个命令执行成功,则第二个不执行,第一个命令执行失败,则执行第二个
-------------
0 (stdin) 标准输入 1 (stdout)标准输出 2 (stderr)标准错误输出
输出重定向:就是把输出的结果显示到一个文件上 (>表示输出重定向)
----------------
输入重定向:< 将右边文件中的内容或内容中的部分输入到右边
-----------------

 ll命令

Linux基础入门教程

Linux系统发布于1991年
Linux系统的优点:免费,开源,稳定,多任务,多用户,具有良好的可移植性
Linux对硬件的要求:i7以上,8G内存以上,反正RAM是越大越好
禁用Linux的防火墙
--------------

查看Linux的网卡信息

ifconfig
重启网卡
service network restart
查看防火墙的状态
service iptables status
很多知识的博大精深,学起来还是需要费一些劲的
ls命令 list 显示文件或目录
ls -a 显示所有文件
ls -l 显示文件的详细信息

touch 创建一个文件
mkdir 创建一个目录

rm -rf 文件名 删除一个文件
----------------------------------
cd . 表示当前目录
cd .. 表示当前目录的上一级目录
ls 查看当前目录的内容
pwd 查看当前所在文件的路径
terminal 相当于cmd 终端

service network restart
查看防火墙的状态
service iptables status

字符集选择UTF-8
Xshell4远程工具操作Linux系统
clear 假装清空的命令
----------------------
修改主机名:
root@主机名
hostname
修改主机名
hostname 名字
vim /etc/sysconfig/network
--------------
Tab 补全的快捷命令
- 开头的是普通的文件
d 开头的是目录文件

查看一个指定目录的文件信息
ls -la /usr
ls -l /etc
---------------
Linux中文件的信息 ll
文件的类型-文件的rwx权限- 硬链接数 所有者(谁创建的) 所属组 文件的大小 文件的创建或修改时间 文件的名称
- 表示普通的二进制文件
d 表示目录directory
l 表示软链接,快捷方式
rwx r读权限 w write写权限 x execute 执行权限
所有者 user 所属组 group 其他人 others
------------
vim中的命令模式,编辑模式,末行模式

cp a.txt /usr/local/a.txt
递归的copy
cp -r d1 /usr/local/d1

rm remove删除文件
rm -f 删除文件
rm -r 删除目录
rm -f a.txt
rm -r d1/
---------------------
cat 查看100行内的文件内容
more 用空格可以翻页 Enter可以下一行 Q键退出或是Ctrl+C
head -number 文件名 查看文件的前几行
tail -number 文件名 查看文件的后几行

mv 原文件 新文件 移动或重命名文件:剪切功能

ln link
ln -s 源文件 目标文件 创建软链接、
软链接:所有人都可以访问,类似于快捷方式

ln 源文件 目标文件 创建硬链接
硬链接:硬链接的大小和源文件一样,且同步更新 ,类似于copy
硬链接不能跨文件系统分区 软链接可以

权限处理
chmod 命令change model
chmod ugo += rwx 文件或目录
ugo: user group others

给文件a.txt的user加上x权限
chmod u+x a.txt
给文件a.txt的user去掉x权限
chmod u-x a.txt
----------------------------
rwx 421 7 读写执行权限
-----------------------------
递归的创建目录
mkdir -p a/b/c

文件夹的写权限,表示可以删除文件夹下的所有数据
文件的写权限,表示是否可以对文件进行修改操作
如果需要删除这个文件的权限,当前的文件所在的文件夹需要有写的权限才行

目录的w权限表示:可以在目录下创建或是删除文件的权限
目录的x权限表示:可以进入到这个目录中去
目录的r权限表示:可以列出目录中的内容
----------------------------------------------
chown xxx 1.txt 改变文件的所有者

chgrp admin b.txt 改变文件的所属组

umask -S 查看系统默认的权限

创建一个文件系统默认的权限就是755=777-022
-----------------

文件搜索命令

find -name
find -size
find -user

find /etc -name init
find /etc -name *init
find /etc -name ????init 前面必须有4个

1k=2 block 数据块
100M=2*102400 block
---------------------------
ctime: c表示change 改变文件属性:所有者,所属组,权限
atime: a表示access 表示被访问过的意思,被查看了
mtime: m表示modify 更改内容的意思

-时间 表示时间之内
+时间 表示时间之外
----------------------------
找60分钟以内的修改文件
find /etc -cmin -60
找60分钟以外的修改文件
find /etc -cmin +60

-a and 逻辑的与:表示并且的意思
find /etc -size +200000 -a -size 300000
find /etc -size +200000 -a -name ca*
-o or 逻辑的或
find /etc -size +200000 -o -name ca*
-----------------
which 查看命令所在的目录位置
whereis ls
which ls
--------------------
找到一个文件并执行某个命令
找到etc目录中的1.txt并执行删除操作
find /etc -name 1.txt -exec rm -f {} \;

将本地目录中的文件查找后进行显示
find /usr/local -exec ls -l {} \;

找到所有名字有init开头的文件 并将找到的所有文件显示出来
find /etc -name init* -a -type f -exec ls -la {} \;

查看文件的i节点
ls -li
----------------
查看命令的描述
whatis

命令的帮助文档
man
查看某个命令的选项用法
--help

-------------------

打包压缩

tar
-c 用tar打包文件
-x 解压
-v 显示打包操作的执行过程
-f 指定压缩或解压后的文件名
-z 压缩
-C 解压后文件存放的路径

tar -xzvf 软件包名.tar.gz -C /home/hao 将软件包名.tar.gz解压到指定的目录下 (注意:-C为大写)

zip 压缩后文件名称 源文件
unzip 需要解压缩的文件 -d 解压后文件的存放路径
------------

ping

ping 127.0.0.1
ping 域名 会得到域名对应的IP地址
ping IP地址
ping 主机名
ping -c 5 127.0.0.1 表示ping 5次后断开
------------
重启 reboot
关机 poweroff
清屏 Ctrl+L
退出或中断当前操作 Ctrl+C
命令自动补全:Tab
-----------

grep 过滤

| 管道 pope

ls -l /etc |more
ls -l /etc |grep init
ls -l /etc |grep init |wc -l

----------------

输入输出重定向

0 stdin 标准输入
1 stdout 标准输出
2 stderr 标准错误输出

输出重定向:将,命令的执行结果,存放到一个文件中去
> 表示重定向:表示重新覆盖写入
>> 表示在原文件的内容的最后面添加写入

错误信息的重定向
2>
---------------
输入重定向:将一个文件中的内容,读出来显示到另外一个位置
<
wall < 1.txt
----------------------

vim Linux系统中最常用的文本编辑器

刚进入的是:命令模式
i 光标前插入
A 本行的行末尾追加内容
a 在光标后追加文本内容
o 在下一行插入
O 在上一行插入

ao插入模式,编辑模式
ESC 末行模式 冒号模式

:wq 保存并退出vim

set nu 让文本显示行号
set nonu 取消文本的行号

vim 文件名
vi 与vim之间的区别就是文本的颜色显示
---------------
强制关闭vim 造成的错误,需要删除产生的临时文件,才能再次编辑文本
---------
用户信息的文件
/etc/passwd
密码文件
/etc/shadow
用户组文件
/etc/group
用户组的密码文件
/etc/gshadow
---------------------

Linux中用户的分类

超级用户
uid=0的用户,一般root用户是uid为0的用户
普通用户 创建用户的时候不指定uid的话,默认系统中的uid是自增的
uid=500-60000
伪用户:Linux系统中任何进程操作都需要有一个用户的身份
uid=1-499
-------------------
添加用户组
groupadd
删除用户组
groupdel
修改用户组
groupmod -n 新组名 旧组名
-------------------------------
添加用户的操作
u: UID
g:
G:
d:指定添加的用户的家目录
e: 指定添加的用户的时效时间
----------------------------------
修改用户
usermod -l 新用户名 旧用户名

禁用用户名
usermod -L 需要禁用的用户名
解除禁用的用户名
usermod -U 需要解禁的用户名

禁用用户的密码
passwd -I 需要禁用的用户名
解禁用户的密码
passwd -u 需要解禁的用户名

程序是静态的,
进程是程序执行的过程,是动态的,是有一定的生命周期的,是动态产生和消亡的
Linux中进程分为:前台进程和后台进程
常用的命令都是前台进程
前台进程在使用的时候是需要占用终端的,后台进程在使用的时候是不需要占用终端的

---------------------------
ps -el 查看所有的进程,包括没有终端的进程
ps -aux 显示当前进程占用CPU和内存的百分比
ps -el --sort pid 对进程进行排序,
ps -aux |grep rpc 对进程结果进行过滤
-------------
关闭进程 kill 进程号
强制关闭进程 kill -9 进程号
重启进程 kill -1 进程号
---------
Ctrl+C 终止一个程序的运行
-------
top 实时监控系统中的进程和性能
------------
Linux中的计划任务
at 在某一时刻执行一次
cron 周期性的执行的

删除计划任务
at -d 任务编号

at -l 查看任务

crontab -l 显示当前的计划任务
crontab -r 删除当前的计划任务
crontab -e 编辑当前的计划任务

查看计划任务的程序是否启动了
ps -el |grep crond

手动的启动一下
/etc/rc.d/init.d/crond start
---------------
crontab 文件保存在 /var/spool/cron 目录中

 ------------

Linux中的目录

Linux基础入门教程

Linux中的软件的安装的仓库

Linux基础入门教程

学会shell脚本后,你自己可以编写shell脚本,你也可以看懂别人写的脚本
很多的事情不是会了才去做的,而是做了才会的
linux 李纽克斯 利尼克斯 里纳克斯
linux创始人,林纳斯-脱袜子
------------------
Linux是从unix模仿和改编而来的
组管理和权限管理:
linux中每个用户必须属于一个组
文件:所有者,所在组,其他人
查看文件的所有者:
ls -ahl

创建一个组
groupadd xxx
在组下面创建一个用户
useradd -g xxx sss

chown 修改文件的所有者

修改某个文件的所在组
chgrp 组名 指定的文件

usermod -g 组名 用户名
usermod -d 目录名 用户名

查看一个用户的信息
id 指定的用户名

===================================
压缩和解压命令
gzip和gunzip
gzip 压缩为 .gz文件, 压缩后源文件会被删除
gunzip 解压.gz压缩文件

zip和unzip
zip 用于压缩为.zip压缩文件
unzip解压.zip压缩文件
将home目录中的文件压缩为myzip.zip文件
zip -r myzip.zip /home/
将myzip.zip解压到/opt/tmp/
unzip -d /opt/tmp/ myzip.zip

tar打包压缩命令
tar压缩后的文件为 .tar.gz文件
tar -zcvf xxx.tar.gz 需要压缩的文件名
将home下所有文件进行打包压缩
tar -zcvf myhome.tar.gz /home/
将myhome.tar.gz解压到当前目录下
tar -zxvf myhome.tar.gz
将myhome.tar.gz解压到已存在的/opt/tmp/目录中
tar -zxvf myhome.tar.gz -C /opt/tmp/
===================================
unix是1973年用C语言编写的

===================================
用户配置文件
/etc/passwd
用户名 : 密码 : 用户id : 组id : 家目录 : shell

存放用户密码的文件,加密过的密码
/etc/shadow

组配置文件
/etc/group

===================================
→←
root密码找回:
开机的时候按enter键
use the ↑and ↓keys to select which entry is highlighted
press enter to boot the selected os e to edit the commands
before booting a to modify the kernel arguments
before booting or c for a command line

按 e
选中kernel行

use the ↑and ↓keys to select which entry is highlighted
press b to boot e to edit the selected command in the boot sequence c for a command-line o
to open a new line after o for before the selected line d to remove the selected line or escape to go back to the main menu

输入 1 然后enter
按 b 进入的是单用户的模式,单用户模式不需要用root密码可以直接进系统
passwd root
设置一个新的root密码

===================================
man帮助命令
help帮助命令

pwd 显示当前的工作目录的绝对路径

ls 显示当前目录下的文件和目录
ls -l 显示当前目录下的文件和目录的详细信息
ls -lh 用常规的单位查看文件

cd 切换目录

绝对路径:从根目录开始定位
相对路径:从当前工作目录开始定位到需要的目录去

..表示上级目录

mkdir 创建目录
依次创建多级目录
mkdir -p /目录1/目录2/目录3

rmdir 只能删除空目录
rm -rf 可以删除任何文件或目录

cp 复制文件或目录
cp 需要复制的文件或目录 复制到的目录路径
cp -r 需要复制的文件或目录 复制到的目录路径

touch 命令

mv命令
剪切:mv 需要剪切的文件或目录 剪切到的目录
重命名:mv 原文件名 新文件名

cat命令 以只读的方式,查看文件的内容
cat -n 显示行号的查看文件的内容
分页显示文件内容 cat -n 文件名 |more

more命令,以全屏的方式,分页查看文件的内容

less命令,功能更强的查看文件内容,查看大文件速度较快

> 输出重定向,覆盖写入
>> 追加,追加写入

cal 显示当前的月份的日历

echo 爱考 打印内容
echo $PATH 查看当前环境变量的路径

head 查看一个文件开头部分前几行的内容
head -n 5 显示前5行的内容
head 默认显示一个文件的前10行的内容

tail 默认显示文件的后10行的内容
tail -n 5 显示后5行的内容
tail 实时刷新查看的文件内容,如果文件内容有变化,tail的显示结果就跟着变化,可以起到实时监控的作用

ln 软链接命令,类似于windows上的快捷方式
ln -s /root LinkToRoot 给/root创建了一个快捷方式,LinkToRoot
删除软链接:rm -rf LinkToRoot

history 查看已经执行过的历史命令
history 10 显示最近执行过的10条命令
!历史命令的编号 再次执行一遍历史编号的命令

date 显示当前时间
date "+%Y %m %d %H:%M:%S" 显示年月日时分秒
date -s "2018-11-11 11:11:11" 给系统设置指定的时间

calender 日历
cal 2018 显示2018年的日历
cal 显示当前月份的日历

find 在目录中找包含关键词的文件
find 目录的路径 -name 需要查找的文件名,或者文件名的关键词
find 目录的路径 -user 用户名 ,按照文件的拥有者查找文件
find 目录的路径 -size +100m 找出所有大于100M的文件

Ctrl+C 终止当前命令的执行

locate 查询速度比较快,
updatedb 更新数据库
locate

grep 过滤,查找文件内容
grep -n 显示查找结果和对应的行号
grep -i 查找的时候忽略大小写

|管道符,表示将前一个命令的执行结果,作为后面命令的执行条件

家目录:
linux中一个用户至少得有一个用户组,可以有多个用户组

新建用户
useradd 用户名
useradd新建用户的时候默认新建了一个相同名字的组
useradd -d /home/xxx 用户名 指定的目录需要提前存在

cd 是指change directory 切换目录

删除用户
userdel 用户名
userdel -r 用户名 删除用户并删除这个用户的家目录
实际工作中只删除用户名,不删除用户对应的家目录

查询一个用户的信息:用户id号,组id号,所在组的名称
id 用户名

whoami 查看当前系统登录的用户用
切换用户
su - 需要切换到的用户名
exit 返回到原来切换前的用户

新建组
groupadd 组名

删除组
groupdel 组名

新建用户的时候就指定对应的组
useradd -g 组名 用户名

修改用户的组
usermod -g 新用户组 用户名

===================================

关机:

shutdown -h now 立即关机
shutdown -h 1 表示1分钟后关机
shutdown -r now 立即重启
halt 关机
poweroff 关机
reboot 重启
sync 把内存中的数据同步到磁盘中去,把没有保存的数据进行保存操作,关机或者重启时最好先执行一下sync防止数据丢失

logout 注销当前用户,用于远程登录,在本地主机中无效

===================================

vim

复制当前行yy
粘贴 p

从当前行开始复制5行 5yy
粘贴 p

删除当前行 dd
从当前行开始删除5行 5dd

设置行号 :set nu
取消行号 :set nonu

末行模式下 输入 u 表示撤销操作

G 跳到末行
gg 跳到行首
20 Shift+g 跳到第20行
===================================

Xshell工具

Xftp工具,上传和下载文件的工具

linux系统中的远程服务sshd服务22端口
setup 系统服务 查看一下sshd是否是开启状态的

远程工具的乱码问题用UTF-8的编码格式
===================================

Linux中一切皆文件,

所有的设备或者硬件都映射为一个文件来进行管理
bin 命令目录,是binary的简写
dev 设备文件
etc 配置文件
home 家目录
lib 动态库文件
media 光驱,U盘文件识别后会存放在这个目录中
mnt 挂载文件夹,识别其他文件系统的文件
opt 安装的软件存放目录
proc 系统内核文件
root 管理员用户
sbin 管理员使用的命令
selinux 安全文件夹,Security-Enhanced Linux)简称 SELinux
tmp 临时文件夹
usr 用户安装的文件或文件夹
usr/local 安装的外加软件的默认的安装目录
var 不断变化的文件,像日志文件的存放位置
boot 系统的启动引导文件
lost+found 系统非正常关机后生成的一些文件的存放位置

Linux系统中有且只有一个根目录/
Linux是以文件的形式来管理设备的,所以linux系统中一切皆文件

\反斜杠
===================================
虚拟机的网络连接的三种形式模型
桥连接:虚拟机的IP与真实主机的IP在同一网段中,容易出现IP冲突,去掉网关1和广播地址255:255-2=253个可用的IP,会出现IP地址不够用的情况
NAT模式:真实主机上有两个IP一个IP与虚拟机中的ip在同一个网段上,Linux可以访问外网不会造成IP冲突,
仅主机模式:Linux上的IP地址是一个独立的IP网段,不能访问外网
所以一般虚拟机建议使用NAT模式

Tab键选择OK或者Skip
/boot分区,引导分区
/根分区
/swap分区
===================================
windows与Linux的区别
windows是收费的系统
Linux是免费,可定制再发布的系统
听一嘴吧
===================================

登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着选项(options)或参数(arguments)
find查找一个文件在系统中的什么位置,locate是神速版本的find(Windows下有个神器Everything和locate功能类似)
--------------------
年轻的时候,我们的生活中根本就不应该有下班这个概念,我们需要几乎所有的时间来使自己成为一个更好的人,更优秀的人
一个人宝贵的就是时间,优秀的技术技能绝不是朝九晚五就可以解决的,而是靠自觉和自我剥削来完善自己。
「合理安排闲暇时间:规划你的闲暇时间」,我理解为计划好休息时间,其他的都用来学习。
-----------------------
Don't watch the clock. Do what it does. Keep going.
不要只看时钟,要效仿时钟,一直前行。
--------------------

ls -l 查看一个文件的详细信息
文件类型--文件权限--如果是文件,表示硬链接数,如果是目录表示该目录的子目录个数--文件所有者--文件所在组--文件的大小,如果是目录显示的是4096--文件最后的修改时间--文件名

linux中常用的文件类型:

d 目录文件,相当于windows上的文件夹
- 普通文件,
l linux上的链接文件,相当于windows上的快捷方式
c linux上的字符设备文件,鼠标,键盘就是这类的文件
b 块文件,硬盘,

文件所有者,拥有该文件的权限,user
文件所属组,拥有该文件的权限,group
其他用户拥有该文件的权限,other

rwx 7=4-2-1 权限:
r 4 read 可读取,可查看
w 2 write 可修改,删除一个文件,需要对该文件所在的目录有写的权限,才能删除该文件。对于一个目录文件表示:可以在目录内创建,删除,重命名目录
x 1 execute 可以进入该目录,或者运行一个可执行文件

. 当前目录
.. 上一级目录
------------------------

文件权限的管理

通过chmod命令可以修改文件或目录的权限
通过+ - = 修改权限
chmod u=rwx,g=rx,o=x 文件或目录名
chmod o+x 文件或目录名
chmod a-x 文件或目录,针对所有的用户

chmod u=rwx,g=rwx,o=rwx 文件或目录名

通过数字修改文件的权限
chmod 777 文件或目录名
rwx =4+2+1 =7

--------------------
修改文件的所有者
chown 文件新的拥有者:文件新的所在组 文件或目录

chown -R 新的用户名 xxx/ 将xxx/目录下所有的文件和目录修改为新的指定的用户名
chgrp -R 新的用户组 xxx/ 将xxx/目录下所有的文件和目录修改为新的指定的用户组
--------------------------
usermod

-----------------

计划任务:

crontab
crontab -e 创建一个计划任务
*/1 * * * * ls -l /etc >> /tmp/xxx.txt 表示每分钟自动执行一下计划任务

计划任务中的5个星号
第一个表示一小时中的第几分钟 0-59
一天中的第几小时 0-23
一个月中的第几天 1-31
一年中的第几月 1-12
一周中的星期几 0-7 0和7都表示星期日

* 表示任何时间
, 表示不连续的时间
- 表示一个范围,多少到多少
*/n 表示每隔多久执行一次

crontab -l 查看当前有多个个计划任务

每隔一分钟将日期和时间写到一个文件中
写一个脚本xxx.sh
date >> /tmp/xxx.txt
给脚本一个可执行权限
chmod a+x xxx.sh
创建一个计划任务每分钟执行一下这个脚本
crontab -e
*/1 * * * * xxx.sh

重启计划任务的服务
service crond restart

crontab -r 删除所有的计划任务
-----------------

Linux系统中磁盘的分区和挂载

分区:
mbr分区:最大支持2TB,操作系统只能安装在主分区,最多可以有4个主分区

gtp分区:支持无限多个主分区,windows下最多支持128个分区,最大支持18EB ,EB=1024 PB=1024TB
windows7 64位以后都支持gtp分区

主分区:Primary partition
逻辑分区:Logical
扩展分区:Extend partition
主分区中有扩展分区,扩展分区中有逻分区

mount 挂载
umount 卸载

Windows中的分区c盘 类似于挂载在linux根目录上的一个目录文件
Windows中的分区d盘 类似于挂载在linux根目录上的一个目录文件
u盘插在Linux系统的电脑上 类似于挂载在linux根目录上的一个目录文件

Linux中IDE硬盘的驱动器标识是hdx~
x标识盘号:a基本盘,b基本从属盘,c辅助主盘,d辅助从盘
~ 表示分区1-4是主分区或扩展分区 5开始就是逻辑分区

hda3 表示第一块硬盘上的第三个分区(主分区或扩展分区)
hdb2 表示第二块硬盘上的第二个分区(主分区或扩展分区)

lsblk -f 老师不离开 查看当前系统的分区和挂载信息的命令

linux中SCSI(斯嘎C)硬盘标识是sdx~
分区 分区类型 唯一标识的40位的UUID字符串
sda1 ext4
sda2 swap
sda3 ext4

新增一块硬盘,让后挂载在系统中(挂载到/home/newdisk目录下)
mkdir /home/newdisk
分区-格式化-挂载-设置可以自动挂载
fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1
mount /dev/sdb1 /home/newdisk
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
mount -a
-----------------------
查看系统中磁盘的使用情况
df -l
df -lh

查询指定目录的磁盘占用的磁盘空间多少
du -h /目录名
-s
-h 指定单位
--max-depth=1 指定子目录的深度
-a 统计的时候包含文件
-c 列出明细的同时,增加汇总值

---------------
统计home目录下文件的个数
ls -l /home |grep "^-"|wc -l

统计home目录下目录文件的个数
ls -l /home |grep "^d"|wc -l
统计home目录下文件的个数和子目录中的文件个数
ls -lR /home |grep "^-"|wc -l
统计home目录下目录文件的个数和子目录中的目录文件个数
ls -lR /home |grep "^d"|wc -l

------------------------

Linux系统上的网络配置

NAT模式:
Windows上的Vmnet8 虚拟网卡的IP与 linux系统中的IP在同一个网段上
windows上的真实网卡与外网通信

自动获取IP,每次重启系统后自动获取到的IP都是可能不一样的

手动设置指定的IP地址:
vim /etc/sysconfig/network-scripts/ifcfg-ehto

gateway 网关
ipaddr IP地址
重启网络服务
service network restart
----------------------------------

Linux中进程的管理:

linux中每个执行的程序都是一个进程,进程可以有两种方式存在:前台和后台
前台进程
后台进程:守候进程

进程的查看:
ps -a 显示当前终端的所有进程信息
ps -u 以用户的格式显示进程信息
ps -x 显示后台进程运行的参数

ps -aux |more
进程的用户名 进程的编号 进程占用的CPU信息 进程占用内存的信息 占用的虚拟内存的情况 使用的物理内存的信息 使用的终端信息 当前进程的运行状态(S 休眠 R正在运行 ) 占用CPU的总计时间 进程执行时的命令行

-----------------
查找指定的进程:
ps n-aux|grep 进程名

查看进程的父进程
ps -ef |more

查看指定进程的父进程
ps -ef |grep 进程名

杀掉一个进程
kill -9 强制杀掉进程

killall 进程名称,杀掉这个进程相关的所有进程

查看终端对应的进程
ps -aux |grep bash

kill -9 进程名 强制杀掉一个进程

pstree 用树状的形式来展现进程信息
pstree -p 根据Pid的信息显示
pstree -u 根据用户的Uid信息显示

Linux中的服务管理

服务的本质是一个进程,一个后台进程
systemctl
restart 重启服务
status 状态服务查看
stop 停止服务
start 启动服务

测试某个端口是否可用
telnet IP地址 端口号

查看linux系统中有哪些服务
setup -- 系统服务
或者
ls -l /etc/init.d/

linux系统中有7中运行级别
0,1,2,3,4,5,6

Linux系统开机的流程:

开机--bios--/boot--init进程--运行级别--运行级别对应的服务

运行级别变成0或者1后需要:进入单用户模式修改成正常的即可

chkconfig 命令可以给每个服务的各个运行级别设置自启动或关闭

查看服务在对应的运行级别下是否自启动,开启的是可以自启动的,关闭的是不能自启动的
chkconfig --list

查看指定的服务的运行级别的信息
chkconfig --list |grep sshd
或者
chkconfig 服务名称 --list

设置某个服务在某个运行级别不自启动
chkconfig --level 5 服务名称 off

----------------

进程的监控

网络的监控 netstat

top 查看系统中正在执行的进程
当前时间 运行时间 当前登录系统的用户
running 正在运行的
sleeping 正在休眠的
stopped 正在停止的
zombie 僵尸进程

netstat -anp |more 查看所有的网络服务

查看某个指定的网络服务
netstat -anp |grep sshd
===============================

Linux中软件包的管理

RPM软件包:redhat package manager 红帽软件包管理工具
RPM软件包以.rpm为扩展名的文件 类似于windows中的setup.ext

查看系统中安装的所有的rpm软件包
rpm -qa |more

查看系统中指定的某个软件包是否安装了
rpm -qa |grep 软件名称

查看火狐浏览器是否安装了
rpm -qa |grep firefox

查看已安装的rpm软件的信息
rpm -qi firefox

查看火狐浏览器安装在什么位置,安装了那些文件
rpm -ql firefox

查看某个文件属于哪个软件包
rpm -qf /etc/passwd

卸载一个rpm软件包
rpm -e 软件包名称

把系统中安装的火狐浏览器卸载掉
rpm -e firefox

rpm软件包的安装:
rpm 中的参数:
i install 安装
v verbose 提示
h hash 进度条

安装火狐rpm软件包到系统中去
rpm -ivh firefox.rpm
==========================
yum 牙木,Linux系统中的一个shell前端软件包管理器,可以自动处理依赖关系,一次安装所有的依赖包
yum查询或者安装的时候是需要连网的
使用yum的前提是需要连网的

查看火狐软件包,在yum服务器上是否存在
yum list |grep firefox

安装火狐软件包
yum install firefox 默认会安装最新版本的软件包

linux中安装的软件一般放在opt目录下

配置环境变量:
vim /etc/profile
在最后一行写入:vim中G快捷键跳到末尾
JAVA_HOME=/opt/jdk1.7.0_79
PATH=/opt/jdk1.7.0_79/bin:$PATH
export JAVA_HOME PATH

注销用户后,设置的环境变量才能生效
logout

tomcat安装

tar -zxvf .tar.gz
cd apach-tomcat-7.0.70/bin/
./startup.sh

在火狐浏览器中访问测试一下
http://localhost:8080

其他客户端访问:
http://Tomcat所在的服务器的ip地址:8080
让防火墙开启8080端口
vim /etc/sysconfig/iptables
重启防火墙后才能生效
systemctl iptables restart

==================
eclipse的安装
解决端口占用问题:把占用端口的服务停止了,然后再重新启动eclipse

==================
mysql的安装和配置

Shell编程:

硬件--内核--shell(命令解释器)--应用程序

#!/bin/bash
#脚本的注释
echo "Hello world"
脚本文件需要有x可执行权限
chmod 755 xxx.sh

执行这个脚本
./xxx.sh 在当前目录下用相对路径的方式执行
/root/xxx.sh 用绝对路径的方式执行
或者
sh xxx.sh 没有可执行权限也可以执行

shell变量:

系统变量和用户自定义的变量
$PATH
$USER
$HOME
$SHELL
$PWD

查看系统中的变量
set |more

shell变量的定义:

静态变量:静态变量不能unset
readonly a=100
echo "a=$a"

动态变量:

shell变量定义的规则:=等号两边不能有空格,变量的名字不能以数字开头

反引号 `` 等价于$() 把里面的内容当做一条命令来执行

shell中环境变量的设置

export 变量名=变量值
source 配置文件
echo $变量名

/etc/profile
让配置文件生效
source /etc/profile

shell中的注释
#单行注释
:<<! 多行注释内容 ! 多行注释

写一个简单的获取输入的参数的脚本信息
#!/bin/bash
#获取到各个参数
echo "$0 $1 $2"
echo "$*"
echo "$@"
echo "输入的参数个数=$#"

ssh 用户名@ip地址

Ubuntu 乌班图

sudo 获取管理员权限 ,类似于windows上的用管理员的身份执行

给root用户设置密码
sudo passwd
--------------------------
echo用于实时输出变量,用来调试shell脚本
!-d 判断一个文件夹是否存在

find -mtime +10 查找10天前的文件

解压缩一个文件
tar -zxvf xxx.tar.gz

-----------------

shell中的自定义函数

写一个简单的求和的自定义函数
#!/bin/bash
# 计算输入的两个参数的和
function getsum(){
SUM=$[$n1+$n2]
echo "和是=$SUM"
}

read -p "请输入第一个参数n1" n1
read -p "请输入第二个参数n2" n2
#调用自定义函数getsum
getsum $n1 $n2
-----------------------------

shell中的函数

:系统函数,自定义函数

获取文件的名字的系统函数basename
basename /home/test.txt
test.txt
basename /home/test.txt .txt
test

basename 返回完整路径最后/的后面的部分

dirname 返回完整路径最后/的前面的部分
dirname /home/xxx/test.txt
/home/xxx

----------------------

shell中预定义的变量

,事先定义好的变量
$$ 返回当前进程的进程号PID
$! 后台运行的最后一个进程的进程号PID
$? 最后一次执行的命令的返回状态,0表示执行成功

写一个测试预定义变量的脚本
#/bin/bash
echo "当前的进程号=$$"
./xxx.sh &
echo "最后的进程号=$!"
echo "执行的值=$?"
-----------------------------

shell中的运算符:

#!/bin/bash
# 计算(2+3)X4 的计算结果
Result1=$(((2+3)*4))
echo "result1=$Result1"

或者
#!/bin/bash
# 计算(2+3)X4 的计算结果
Result2=$[(2+3)*4]
echo "result2=$Result2"

或者使用expr来实现
#!/bin/bash
# 计算(2+3)X4 的计算结果
TEMP=`expr 2 + 3`
Result3=`expr $TEMP \* 4`
echo "result3=$Result3"

#!/bin/bash
# 计算输入的两个参数的和
SUM=$[$1+$2]
echo "SUM=$SUM"
---------------------------------

shell中的条件判断语句

lt 小于
le 小于等于
eq 等于
gt 大于
ge 大于等于
ne 不等于

-e 判断一个文件是否存在
-d 判断一个目录文件是否存在
-f 判断一个普通文件是否存在

写一个简单的判断是否相等的脚本
#!/bin/bash
#判断两个字符串是否相等
if [ "ok" = "ok" ]
then
echo "equal"
fi
-------------------
#!/bin/bash
#判断两个数字的大小关系
if [ 23 -gt 22 ]
then
echo "大于"
fi

-------------------
#!/bin/bash
#判断一个目录中某个指定的文件是否存在
if [ -e /root/shell/aaa.txt ]
then
echo "存在"
fi
--------------------
shell中的流程控制语句

if判断的使用

写一个简单判断的脚本
#!/bin/bash
# 判断输入的一个参数,如果大于等于60,输出及格了,如果小于60,则输出 不及格
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi
----------------------

case判断语句的使用

#!/bin/bash
# 判断输入的参数是1 输出:周一 输入的参数是2 输出周二,其他输入,输出other
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
----------------------

for循环判断

#!/bin/bash

# 打印命令中输入的参数
for i in "$*"
do
echo "the num is $i"
done

使用$@
#!/bin/bash
# 打印命令中输入的参数
for i in "$@"
do
echo "the num is $i"
done

-----------------

for循环的第二种语法形式

#!/bin/bash
# 计算从1加到100
#定义一个结果变量
SUM=0
for((i=1;1<100;i++))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"

(100+1)*(100/2)=101*50=5050
----------------------

while循环

#!/bin/bash
# 在命令中输入一个数n 统计从1+...+n 的值是多少
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "sum=$SUM"
-----------------------------

使用read来读取控制台中的输入

#!/bin/bash
# 读取控制台中输入的值
read -p "请输入一个数num=" NUM1
echo "你输入的值是num1=$NUM1"

设置读取输入的时间是10秒
#!/bin/bash
# 读取控制台中输入的值,10秒内没有输入自动跳走
read -t 10 -p "请输入一个数num2=" NUM2
echo "你输入的值是num2=$NUM2"

 vim中最常用,超实用的快捷键

Shift+g == G 移动到文章的最后
Shift+4 == $ 移动到光标所在行的行尾
Shift+6 == ^ 移动到光标所在行的行首
gg 进入到文本的开始,文件的第一行
Shift+g == G 进入到文本的末端,文件的最后一行

u ---撤销操作
ctrl+r ---反撤销

:wq -- 保存并退出。
ZZ -- 保存并退出。
:x -- 保存并退出。
:q! -- 不保存退出。
nG: 到文件第n行。

cd ~ 回到当前用户的家目录下

学习中想到的乱七八糟

难者不会,会者不难

学习的时候先对知识有一个整体的框架构建,然后在关注和解决细节问题
当遇到实在无法理解的问题,请不要死扣细节问题,适当的模糊它,适当的囫囵吞枣

技术本身不难,在于你自己是怎么理解的,理解到位了就不难
linux需要多练习,多思考成长才会很快
熟练了之后就会有很多的想法,我亦无他,惟手熟尔

 推荐的一款电脑屏幕录制软件基本上很清晰,1分钟1M大小

Camtasia Studio7

 Linux基础入门教程

桥接模式可以联网

有些的知识真多:博大精深

互动真的很重要:喜欢的是互动的更多一些,不要喊你半天你没反应,

人生最靠谱的竞争对手是自己
种一棵树最好的时间是10年前,其次是现在
黑底白字,看着不累眼睛
这个时代对那些勤于学习,努力为实现目标从不放弃的人来说,是公平的,因为变现的渠道确实很多,多加琢磨,勤于实践就会有所收获。
寒冬不可怕,在寒冬里没有生存能力,才是最可怕的。

做好本职工作的同时,积极学习提高自我,做好长期应对的准备,等待好的时机,再出手。
有责任心,默默无闻,愿意努力付出

按照别人的意愿活着,活的是一脸懵逼,别人舒不舒服是别人的事情,自己爽不爽应有自己选择,活着是自己的与他人毫无关系
不喜欢就是不喜欢,没必要掩饰

朋友介绍跟另外5个不认识的女孩子去ktv玩,然后去吃饭,谁知道那几个女孩子先到的ktv然后我们到了之后,玩了没多久
他们都借口有事直接走了,5个一起都走了,感觉这5个女生有些不尊重人,给我们的感觉就是看不起我们,搞的我们蛮没面子的,心情刷一下子就坏下来了,晚上吃饭都木得心情
本来说好了,一起玩认识一下新朋友的

停车还是找停车位停吧,或者收费的停车场也行,一张罚单就200超级不划算还很麻烦

做什么事情一定得提前规划好,做到心中有数

春困秋乏冬冷夏热 学习真的是需要一定的能力的,这种能力是克服困难的能力,是面对挫折的能力,是自我恢复调节的能力,克服不了前进路上的种种障碍终究是一事无成庸庸碌碌

与其满脑子去想一些有的没的,还不如把自己的时间和经历用在提升自我上,让自己变得更优秀,优秀是一种能力,更是一种优秀的生活态度
我亦无他,惟手熟尔

说一千道一万,不如自己尝咸淡
用正确的方式做事情,可以做的更好,效率更高,所以现在干什么事情,很少糊弄,一定要花时间做的事,就尽力做好,可能这是最省事的方法。

对同学们想说的是:如果你的目标是100分,达不到能得90分也不错,如果你想省事,目标定成60分,达不到要补考,还可能多次补考,浪费的时间精力反而会更多。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这