首先对于Linux的目录结构的大体进行讲解一下,下面贴一个图。
1:基本的命令(可能命令多了,不方便看,大家可以复制到word中,然后通过关键字进行搜索就可以找到需要的命令了哦!)
(1)ctrl+win+d:显示桌面(这是快捷键) ctrl+alt+T:快速打开一个终端 ctrl+shift+T:创建一个终端,并且以类似浏览器的方式进行多终端显示,并且用alt+数字来进行显示对应数字的终端界面; ctrl+shift+D:关闭终端
(2)ctrl+C:命令不执行
(3)ls:显示当前目录下的所有的文件和文件夹
(4)ls xxxx:显示xxx下的所有文件和文件夹(比如显示根目录下的所有文件和文件夹 ls /)
(5)ls -a :显示当前目录下的隐藏文件和非隐藏文件
(6)ls -l:以列表的形式显示当前目录下的内容
(7)ls -l -h :显示当前目录下的文件总容量
(8)ls x*:显示当前目录下以x开头的文件(比如 ls 2* ,这样就只会显示以2开头的文件)
(9)clear:清空当前终端屏幕中的内容(简单点就是清屏)
(10)pwd:查看当前所在的路径
(11)cd xxxx:进入某个xxx目录
(12)cd .. (两个点):返回上一级目录
(13)cd ../.. :返回当前目录的前两级,注意这里不是直接写四个。,而是需要通过用“/”来分割
(14)cd -(减号) :快速返回上一次进入的路径的目录
(15)cd ~(波浪线):返回到当前用户的目录
(16)touch xxx:创建一个xxx文件
(17)touch .xxx:创建一个隐藏文件(注意:文件名前面有一个点,这就是和上面的不同)
(18)mkdir xxxx:创建一个xxx文件夹
(19)rm xxx:删除xxx文件或者文件夹 rm xxx -r :删除文件夹和文件,其中不管文件夹是否有内容都能够删除,前面的rm命令必须保证没有内容才能够进行删除 rmdir xxx:删除文件夹(只能删除文件夹)
(20)xxx --help :查看xxx命令的使用文档
(21)man xxx :查看xxx命令的使用文档
(22)gedit xxx :打开并且能够编辑xxx文件(比如gedit 123.txt)
(23)cat xxx:在终端直接显示xxx文件的内容(比如cat 123.txt,就一次性直接把txt中的内容显示出来了)
(24)more xxx:显示xxx文件的内容,但是不是一次性显示,这就是和cat命令的区别,一般用在大文件的显示中。(空格就能够向下翻页)
(25)history :显示之前操作过的历史命令内容,当显示了命令之后,还可以用命令 !数字 ,这样就可以直接执行对应的显示中的命令的内容
(26)ls >xxx.txt:重定向,也就是相当于把ls本来要显示在终端的内容,显示到xxx.txt文件中,里面的内容就是终端本身显示的内容(会把之前xxx。txt文件中的内容先清空再添加当前新的内容)
(27)ls >>xxx.txt:重定向,这和上面的区别就在于,这样会把新的内容追加到文件中(不会清空之前xxx。txt文件中的内容)。
(28)tree :以树的形式显示当前目录中的所有文件和文件夹
(29)mkdir A/B/C/D/E -p :这类似的命令主要是用来创建,比如想在某个文件夹下面的下面的下面的某个文件夹中创建某个文件夹,但是前面的都没有创建出来,如果一个个创建那么比较麻烦,通过加一个-p的这样的方式创建的话,会默认把没有的文件夹进行创建出来。大家可以对比一下有-p和没有-p的结果。
(30)mv xxx1 xxx2:重命名,其中第一个参数xxx1是要进行重命名的文件或者文件夹,第二个参数xxx2是需要进行修改为的名字,如果xxx2是当前目录已经存在的内容,则会把xxx1内容剪切到xxx2中,这时候的功能就是相当于剪切了,否则就是重命名的功能。
(31)ln -s xxx1 xxx2 :创建xxx1文件或者文件夹的快捷方式(也就是副本的意思,即软链接),当原始文件被删除后,这个快捷方式也会被删除,无法进行使用
ln xxx1 xxx2:创建xxx1文件或者文件夹的快捷方式(也是副本,但是是硬链接),当原始文件被删除后,这个快捷方式还是能够进行使用,这就是和软链接的区别
(32)grep "xxx" yyy :搜索yyy文件中,包含有xxx内容的文件,就是实现搜索功能
grep -n "xxx" yyy :使满足查到的内容中显示行数
grep "^xxx" yyy:查找必须以xxx开头的内容(主要是^符号的作用,在正则表达式中都有用到)
grep "xxx$" yyy :查找必须以xxx结尾的内容(主要是¥符号的作用,这在正则匹配都有用到)
(33)cp xxx .txt yyy:复制粘贴xxx。txt文件到yyy中,必须保证yyy是已经在当前目录中存在的。如果在将一个文件夹复制粘贴到另一个文件夹中的时候,需要使用命令有所改变,即为:cp xxx yyy -r
(34)提示没有权限,则添加sudo即可
(35)find xxx -name "yyy":也是一个搜索命令,xxx表示的是要进行搜索的目录,可以为当前,也可以为根目录,-name表示的是以名字来进行搜索(还可以为-size ,这就是以文件大小进行搜索,还可以根据权限搜索:-perm),yyy表示的是进行搜索中名字的内容(如果是以大小来搜索,则这里填写文件大小,比如2M,2k ,+2M(大于2M),-2M(小于2M)都可以;如果是以权限进行搜素,那么就填入权限的大小即可,比如777,666等等)。。
下面贴一下这个命令其他的用法:
(36)tar -cvf xxx.tar yyy:将yyy文件进行打包(yyy可以是多个,不一定只有一个)成为名为xxx的压缩文件,比如tar -cvf yasuo *.txt,这样就把当前目录下以txt结尾的文件都打包成一个叫yasuo的压缩包中,但是这个不进行压缩处理
(37)tar -xvf yasuo.tar :解包,也就是打包的逆过程
(38)tar -zcvf xxx.tar.gz yyy:这是打包并且压缩(要掌握),这压缩后的容量最小
tar -jcvf xxx.tar.bz2 yyy:这也是压缩,只是压缩的形式不一样(要掌握),压缩后的容量次子
zip xxx.zip yyy :这也是压缩的方式(掌握),压缩后的容量相比前面两种都大
tar -zxvf xxx.tar.gz :解压缩包(要掌握)
tar -jxvf xxx.tar.bz2:解压缩包(要掌握)
unzip xxx.zip:解压缩包(要掌握)
(39)which xxx:查看xxx命令的路径,比如which ls ,就是查看ls命令所在的路径
(40)cal:查看当前的日历
date:查看当前的时间
date "+%Y------%m-----------%d":以自定义的格式显示年月日的时间
(41)ps -aux:查看ubuntu当前的进程
top:显示当前的进程,动态变化显示
htop:也是显示当前的进程,更加形象的显示
kill -9 进程号:强制性(-9存在的作用)杀死对应的进程号的进程
(42)reboot:立刻重启电脑
shutdown -r now:立刻关机重启
shutdown -h now:立刻关机
init 0:关机
init 6 :重启
(43)df:显示硬盘的使用情况
du:显示当前目录的使用情况
ifconfig:查看网卡情况
(44)useradd 用户名 -m:创建新用户
passwd 用户名:为用户设置密码(当创建新用户后,就需要设置密码)
whoami:查看当前用户名
exit :退出当前用户,返回之前切换过来的用户
ssh 用户名@IP端口地址:远程连接用户名的ubuntu的电脑
su 用户名:切换用户,但是目录路径还是原来的用户
su - 用户名:切换用户,并且切换到对应用户的目录路径
userdel 用户名:删除用户(不删除用户目录,只删除用户名)
userdel -r 用户名:删除用户(删除用户目录和用户名)
sudo -s :切换到超级用户root
groupadd xxx:创建一个用户组xxx
groupdel xxx:删除xxx用户组
useradd -g 组名 用户名:将用户添加到对应组名中(需要root权限)
cat /etc/passwd:查看所有的用户信息
chgrp 组名 文件名:改变文件所属的用户组,比如chgrp ZZZ 1.py (这就将1.py这个文件的所属组由YYY变成了ZZZ,当然必须保证存在ZZZ这个组)
chown 用户名 文件名:改变文件所属的用户,比如chown www 1.py(这就将1.py这个文件的所属用户由xxxx变成了www,当然也必须保证www用户存在)
(上图中,r:表示读权限,w表示写权限,x表示可执行权限)
知识点:修改文件权限(非常重要)
方法一:字母法
chmod u=rwx 2.py :改变用户拥有者对于2.py这个文件的权限为可读可写可执行(而之前只是可读可写权限),当前权限类型可以看情况进行自由的控制
chmod g=rwx 2.py:改变同组用户对于2.py这个文件的权限为可读可写可执行(而之前只是可读可写权限),当前权限类型可以看情况进行自由的控制
chmod o =rwx 2.py:改变其他用户对于2.py这个文件的权限为可读可写可执行(而之前只是可读权限),当前权限类型可以看情况进行自由的控制
chmod u=r,g=r,o=r 2.py:同时修改多个权限内容
方法二:数字法(推荐使用,因为方便很多)
其中可读权限r对应的数字=4;可写的权限w对应的数字=2;可执行权限x对应的数字=1;所以通过这样就有比较方便的形式来修改权限内容
chmod 137 2.py :比如这样就使得2.py文件的权限变成了,用户者有可执行权限x(因为1对应可执行),同组用户拥有可执行和可写权限(因为3=2+1,而2代表可写,1代表可执行),其他用户拥有可读可写可执行权限(因为7=1+2+4,而1代表可执行,2代表可写,4代表可读)
(45)通过useradd命令,当新创建一个用户的时候,无法使用sudo切换到root权限,需要进行下面两步来获取权限:(注意:是在非新用户的情况下的用户来操作下面的命令)
sudo usermod -a -G sudo 新用户名
sudo usermod -a -G adm 新用户名
(46)gcc -o test hello.c:编辑C语言程序hello.c
./test :运行刚才编译好的程序
(47)mount /mnt/cdrom/:使用windows中挂载的ISO镜像文件,来实现文件共享的形式(这里需要在虚拟机的设置中设置好需要挂载的ISO文件的路径)
umout /mnt/cdrom/:卸载windows中挂载的ISO文件
mount /dev/sad1 /test/ :将/text/文件挂载到sad1分区上
(48)fdisk -l :查看linux分区情况
df 文件全路径:查看某个文件所属的分区,比如 df /boot/
(49)ifconfig:查看ip情况的命令(注意:在windows下是ipconfig,存在不同)
(50)cp -r dir1 dir2 :拷贝文件夹,其中的-r表示的就是一个递归的意思(这个命令会逐次询问是否确定要拷贝,如果不想每次都提示则使用:cp -rf dir1(需要拷贝的文件夹) dir2(拷贝到的目录))
cp 文件1 文件2 :拷贝文件
(51)export PATH=$PATH:目录路径:临时在PATH环境变量中添加一个变量(注意:当关机之后这个配置就会消失,所以说只是临时的)
(52)env :显示系统的环境变量配置信息
(53)echo $PATH:显示PATH的配置信息
(54)通配符:*代表一个或者多个字母或者数字 ; ?代表一个字母或者数字
(55)alias 命令别名 ‘真正执行的命令’ :为真正执行的命令取一个别名,这个主要用在比如一个很长的命令,想简化一点执行取个别名,比如alias ll 'ls -l /home'
二:vim编辑器命令
(1)字母i(光标前面插入)或者字母a(光标后面插入)或者字母o(开始于下一行)或者字母I(大写i,行首插入)或者字母A(大写a,行尾插入)或者字母O(大写o,在前一行插入):切换到编辑(插入)模式,这种模式才能编辑文件,因为一打开的时候是默认处于命令模式的,而无法编辑文件,只能处于编辑模式才可以
(2)保存文件:必须是处于末行模式才能执行命令,由编辑模式先到命令模式,然后再由命令模式切换到末行模式(只能这样),而不能直接从编辑模式到末行模式。所以这样的命令是:编辑模式按ESC键切换到命令模式,然后再按":"(冒号),切换到末行模式,然后再输入wq,这样就保存和退出了
(3)yy:复制当前行内容 (相当于windows中的ctrl+c) ;;;数字yy:表示复制光标所在开始向下数字N行。比如4yy
p:粘贴复制的内容(相当于windows的ctrl+v)
dd:剪切当前行(相当于windows中的ctrl+x);;;数字dd:表示剪切光标所在行向下数字N行。比如2dd
d0:剪切光标位置到行首的内容
字母D:从光标位置开始,剪切到行末
字母x:删除光标后面的内容,且单个字符的删除
字母X:删除光标前面的内容,且单个字符的删除
字母dw:删除光标所处的单词
字母u:撤销操作
ctrl+r:反撤销
字母h:光标左移
字母l:光标右移
字母j:光标下移
字母k:光标上移
字母H:光标移动到当前屏幕最上面
字母L:光标移动到当前屏幕最下面
字母M:光标移动到当前屏幕中间
ctrl+f:向下翻一页屏幕
ctrl+b:向上翻一页屏幕
ctrl+d:向下翻半屏幕
ctrl+u:向上翻半页屏幕
字母G:快速到代码的最后一行
字母gg:快速到代码的第一行
数字G:快速定位到数字对应的那一行代码
字母w:向后跳一个单词,即跳到下一个单词的开始
字母b:向前跳一个单词,即跳到上一个单词的开始
字母v+移动光标位置+>>(<<):选中光标经过的内容,并且右移(左移)
字母V+移动光标位置+>>(<<):选中光标所经过的行的内容 ,并且右移(左移)
符号.(就是符号点):重复刚才的操作
符号{:向上跳转一段代码块
符号}:向下跳转一段代码块
字母r:替换一个字符
字母R:替换多个字符
shift+zz:保存并退出,相当于末行模式下的wq的保存
末行模式中:
(1)%s/要进行替换的内容/需要替换后的内容/g:替换整个代码中的内容为相应的内容。。1,10s/查找的内容/替换的内容/g:替换第一行到第十行中的相应的内容
(2)wq:保存并退出
(3)q:退出
(4)q!:强制退出,不保存
三:分区的知识点
(1)主分区+扩展分区< 4,扩展分区不能直接使用,需要分成逻辑分区,逻辑分区没有数量限制
四:shell知识点
(1)查看系统中安装的shell类型:ls -l /bin/*sh
(2)查看当前操作系统的环境配置:env
(3)修改shell类型:chsh -s 新的shell名 ;比如 chsh -s /bin/csh
(4)查看历史命令:history
(5)执行历史为第N条的命令:!N
五:ubuntu安装vmware Tools(这个东西非常非常重要,进行虚拟机开发的都要装这个,能够方便很多操作,比如windows和Linux共享文件)
(1)选择虚拟机菜单栏--安装VMware tools
(2)然后在Ubuntu系统中弹出的VMware tools窗口中,找到VMwaretools-9.6.0-1294478.tar.gz
(3)然后右击--复制到--桌面
(4)复制完之后 这时候左边的文件夹图标--右击退出先
(5)然后在桌面上的VMwaretools-9.6.0-1294478.tar.gz,右击 提取到此处
(6)这时候桌面就多了一个vmware-tools-distrib的文件夹
(7)然后再重新打开左边的文件夹图标,打开之后在右上角有一个搜索。
(8)弹出的搜索地址栏输入 gnome-terminal ,输完之后点一下那个放大镜图标进行搜索
(9)然后在搜索的结果里面拉到最下面找到终端图标并且打开它
(10)然后在弹出的终端窗里输入sudo su。。sudo su命令在ubuntu中可以这样解释,sudo su命令,也被称为“替代用户”、“超级用户”或“切换用户”,
(11)然后输入登陆管理员 密码
(12)然后输入完密码之后 ,使用cd 命令 进入Ubuntu桌面
(13)然后再用CD进入在Ubuntu桌面里面的vmware-tools-distrib文件夹
(14)然后进入vmware-tools-distrib文件夹之后,使用sudo ./安装命令 对vmware-tools-distrib文件夹里面vmware-install.pl文件夹进行安装sudo ./vmware-install.pl
(15)出现[/USR/bin]之后一直开始按回车键 ,直接按到/dev/sr0 ...停止为止
(16)到/dev/sr0 ...之后输入reboot重启系统的意思
(17)这时候屏幕变成全屏了这样表示安装TOOLS成了这时候可以往里面拉文件了
PS:安装成功后进入系统后,按【CTRL+Alt+enter】键就能给ubuntu全屏啦
六:linux下的任务调度------crontab命令
任务调度:作用就是用来指定某个任务在某个时间进行自动的执行(比如想在每天的凌晨亮点将数据库中的内容进行备份,如果这换成人为的进行工作,那么将非常麻烦)
(1)设置任务:crontab -e
(2)设置任务(单个):当执行了设置任务的命令之后,会进入任务设置文件,这时候只需要写将要执行的命令就可以了
比如:(1)每分钟将当前的时间记录到一个文件中:***** date >> /home/mydate(这命令的含义就是每分钟把时间写入到home文件夹下的mydata中)
(2)每天的凌晨亮点将当前的时间写入到文件中:0 2 * * * >>/home/mydate2
规则就是:先写时间,然后接着写命令。
这里顺便说一下关于这个时间的设置规则:其中有五个位置,分别是分钟,小时,天,月,星期(注意是没有年份的),如果用*号进行占位,那么就是表示每一个月每一天都会进行该命令,这个很简单,就和正常的*占位的含义表示的是一样。
(3)设置任务(多个):
1)当然,可以直接在设置任务命令执行后,将想要执行的任务进行统一的写入到那个文件中。(这个方法的缺点就是:当多个任务进行写入的时候,会发生混乱,而且写的任务多了看着也比较麻烦)
2)把所有的任务写入到一个可执行文件中(也就是属于shell编程的内容)
例如还是上面的操作内容:下面就是具体的步骤
1>>>>>>首先创建一个后缀名为.sh的文件,注意一下一般shell编程的文件后缀都是这样的(这里我假设设置名字为test.sh)
2>>>>>>将需要进行的任务写入.sh的文件中(注意这里就不需要添加操作的时间进来,而是只需要写操作的内容),比如date >> /home/mydate
3>>>>>>将刚才的文件进行保存。
4>>>>>>修改刚才的.sh的文件(这里假设是为test.sh)的可执行权限,因为默认的创建出来的是没有可执行权限的,所以需要进行修改。命令就是chmod 744 test.sh(其他的权限都可以根据需要进行保存,但是一定保证拥有者的权限是7,即可读可写可执行)
5>>>>>>还是进行任务设置的命令,但是里面就有些不同了,接下来只需要将操作的时间和对应的操作的可执行文件添加就可以了。比如:* * * * * /home/test.sh
6>>>>>>>保存上面的内容,这样的话,同样实现了多个任务进行调度,这样的好处在于可以将不同的任务写到单独的文件中,方便进行管理,而且进行查看也更加的明显。
(4)终止任务调度:
1)直接操作刚才的任务调度命令后的那个文件中的内容,手动进行删除里面内容
2)使用该命令:crontab -r (注意:这个命令要小心点使用,因为一旦使用,那么任务调度中的内容就会变清空)
(5)列出当前存在哪些调度任务
crontab -l
七:Linux进程知识点
进程的含义:简单点说,就是正在执行的程序。更加具体的说的话,进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程的含义:1)轻量级的进程 2)进程有独立的地址空间,而线程没有 3)线程不能独立存在,线程是由进程创建的 4)线程消耗的CUP比进程小很多
(1)查看当前系统的进程:ps -a (显示当前终端的所有进程信息) 或者 ps -u (以用户格式显示进程信息) 或者 ps -x (显示后台进程运行的参数) ,一般的话都直接一起用,直接ps -aus ,这样查看到的消息比较全
(2)杀死进程:kill 进程号(这种碰到一些重要的进程是无法进行结束,这时候就需要强制杀死,即使用 kill -9 进程号)
(3)杀死连续性进程:killall 进程号 ---------------这个命令会杀死该进程及其子进程和线程
八:动态管理Linux系统进程命令----top 命令详解
上面的框,从上到下,从左到右的进行标记解释一下:
1)系统当前时间
2)系统开启了多久(从开机开始算起)
3)系统当前的用户数量
4)负载均衡(相当重要):表示当前系统的负载情况,如果这三个数字加起来除以3,大于0.6,则表示系统负载已经需要注意使用情况了。
5)当前系统的进程数
6)僵尸进程数:某个进程由于某种情况导致终止,但是没有通知父进程,而导致资源无法进行回收,这样该进程就变成了僵尸进程,如果该进程数越多,那么内存使用越严重
7)当前系统的CPU使用情况
8)当前系统的空闲CPU情况:该数值越大越好
9)当前系统内存情况
10)虚拟内存大小
(1)指定系统更新时间:top -d 时间秒数 ,比如10秒刷新一次:top -d 10
(2)设置系统时间:date MMDDHHMMCCYY.SS-----------意思是指:月月日日时时分分年年。秒秒
(3)查看月历:cal 月 年,比如cal 9 2017
九:监控网络状态信息命令----netstat
(1)nestat -an :按端口号显示
(2)ping 主机ip:测试是否连通
(3)traceroute:显示数据包经过的历程
(4)route:查看本机路由的情况(顺便提一下,一个路由器的话,都包含一个转发路由表,这样才能知道与该路由表相连的路由是哪一些,才能实现数据的传送)
十:Linux下使用Mysql
优势:(1)免费(2)跨平台(3)轻(4)支持多并发
(一)安装mysql步骤
(1)准备好安装文件,可以使用ISO镜像文件或者直接使用windows共享文件来实现,将Mysql的Linux版本拷贝到Linux系统下
(2)拷贝的压缩文件,则首先需要将该文件进行解压缩,解压缩的命令根据压缩包的后缀来一一对应(在文章上面基本命令中有进行介绍)。
(3)创建一个Mysql组(组的名字就自己定义就行了,我这里就用Mysql来代替),方便Mysql以后的管理方便 ----------------groupadd Mysql
(4)创建一个属于Mysql组的用户---------------------useradd -g Mysql mysql
(5)进入解压缩的Mysql文件夹目录下,然后再初始化数据库,使用scripts/mysql_install_db --user=mysql (就是用mysql这个用户来初始化一个数据库)
(6)改变当前目录中的文件夹的所有者为root下(这一步可有可无),chown -R root
(7)改变data文件的拥有者(这一步也可有可无,只是这样进行分组管理的话,能够方便数据库之后的管理而已),chown -R Mysql data
(8)改变用户组的所在组为Mysql组下(这也是方便管理,这样一看就知道是属于Mysql数据库组下面的内容),chgrp -R Mysql
(9)启动mysql数据库-------------bin/mysqld_safe --user==mysql & (其中&表示的是在后台进行运行)
(10)检查是否启动成功,即检查mysql的端口是否开启就可以了 netstat -anp |more ,如果看到有3306这个端口号的信息,那么就表示成功了
(二)使用mysql
进入bin文件夹中,然后输入./mysql -u root -p (注意命令前面有个.(点)其中这个和windows下在cmd控制台中操作mysql是一样的了),然后再输入用户密码就可以了。后面的就和windows一样了,查看数据库什么的都是一样
PS:上面那个命令在默认情况下只能再bint文件下才能运行。如果我们需要在任何的目录都能运行的话,那么就需要配置一下环境变量(这其实和windows一样的性质)
修改环境变量:(1)查看当前的环境变量的内容,这主要是用来查看,重点关注一下PATH----------命令 env
(2)真正意义上的修改,回到用户的目录下,即cd 用户名,ls -al 可以看到有个.bash_profile这个目录,我们需要进行添加内容的也就是这个下面
(3)打开.bash_profile---------------------vi .bash_profile
(4)在打开的文件中,找到PATH,然后在其后面添加mysql的bin的路径就可以了,比如/home/mysql/bin/,我的就是这样,大家就根据自己的情况就可以了
(5)保存修改
(6)这样的话,就能够在任何的目录下都使用mysql命令进入了
PS:在使用mysql的时候,都知道在windows中的Eclipse等IDE中使用的时候,只要使用到数据库,那么就必不可少的就是数据库的驱动jar包了。同样的,在Linux下也一样,首先是先拷贝一个驱动包的Linux版本。特别特别特别注意一点,这个驱动包不能随便的放,而是必须放在jdk目录下,具体的要放在/jdk/jre/bin/lib/ext/
(三)数据库的备份和恢复(这个在开发中是非常重要的)
(1)下面的这命令都是需要在mysql的安装文件目录下的bin目录下
备份数据库:mysqldump -u root -p密码 数据库名 > 备份文件路径(比如/hong/mydata)
(2)这条命令在任何目录下都可以进行,当前前提是安装我上面进行配置了环境变量才行哦!否则还是和上面一条的命令一样,到bin目录下运行
恢复数据库:mysql -u root -p密码 数据库名 < 备份数据库的名字
(十一)ssh(secure shell)的知识点(这个工具对于Linux开发非常重要)
ssh的使用:必备条件(1)主机和Linux之间能够Ping通(2)Linux下的sshd服务必须打开(这个默认是打开)
(1)安装,这个在windows直接下个ssh软件就可以了(直接百度secure shell 客户端就有了或者安装secureCRT就行)
(2)然后运行ssh的客户端,进行连接就可以了,非常的方便
(十二)Linux自动备份mysql数据的实现(主要通过六知识点+十一知识点)
步骤: 1)创建一个shell文件,后缀为.sh,比如upmysql.sh,则执行命令----------vi upmysql.sh (我这个就直接放在/home/目录下了)
2)编写内容格式为:操作命令 -u 数据库用户名 -p数据库用户密码 >备份数据库到的目录
比如:/home/mysql/bin/mysqldump -u root -ptest uptestdata >/home/upcontentmysql.bak
3)修改刚才编写的.sh文件的权限,添加可执行权限--------命令:chmod 744 upmysql.sh(要修改,因为默认是没有可执行权限的)
4)执行设置任务--------------命令ctontab
5)编写内容:0 2 * * * /home/upmysql.sh
6)保存内容
(十三)Linux启动过程的分析
(十四)压缩和解压缩
(1)压缩:
1)zip 需要压缩后的名字 需要压缩的文件-----------------------------一对一的压缩
2)zip 需要压缩后的名字 需要压缩的文件 需要压缩的文件 ------------------多个文件一起压缩到一个压缩文件中
3)zip -r 需要压缩后的名字 需要压缩的文件夹路径------------------压缩文件夹
上面是基础的,下面还贴一下更多的压缩命令
(2)解压缩
1)unzip 需要解压缩的文件名
更多的功能解压缩命令
(十五)Socket编程
这里介绍一下关于Socket编程的一些知识,刚好,这样的话,可以把服务器代码部署到Linux,然后客户端在Windows,这也就是一般的客户端与服务器之间的通信方式!下面直接贴一下代码吧,相信大家都可以看明白的!
服务器端:(可以部署在Linux下,当然也可以直接在windows下都可以,只是公司一般的话,服务器都放Linux下)
package socket;
/*
* 服务器端socket通信
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyserviceTest {
public static void main(String[] args) {
try {
//设置服务器的端口,可以进行设置,只要端口不和其他的冲突即可
ServerSocket ss = new ServerSocket(8999);
System.out.println("开始监听!");
while(true){
//监听,获取消息
Socket s = ss.accept();
InputStreamReader is = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(is);
//获取发送过来的消息
String content = br.readLine();
System.out.println("I get a message from you :"+ content);
//向发送过来信息的客户端发送信息进行反馈
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
PrintWriter pw = new PrintWriter(osw , true);
pw.println("i send you are welcome!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
情况1:客户端:(客户端发送一条信息,接受服务器反馈回来一条信息,再结束通信)
package socket;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* 客户端socket
*/
public class MyClient {
public static void main(String[] args) {
try {
//连接服务器通信(填写服务器的IP和对应的端口号)
Socket s = new Socket("49.123.119.186",8999);
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw , true); //注意要写true,表示进行刷新
//发送信息
pw.println("hello myserver!");
//读取从服务器发送过来的消息
InputStreamReader is = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(is);
//获取发送过来的消息
String content = br.readLine();
//控制台打印下消息
System.out.println("i get a message from myserver:" + content);
} catch (Exception e) {
e.printStackTrace();
}
}
}
情况2:客户端:(客户端持续性的发送信息给服务端,但是不接受服务端反馈回来的信息,也就是单方向的通信!这种情况把服务端部署在Linux,客户端在Windows下,才更加直接的看到结果,如果都放在Windows下,IDE的控制台无法这样进行切换)
package socket;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/*
* 客户端socket
*/
public class MyClient {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
//连接服务器通信(填写服务器的IP和对应的端口号)
Socket s = new Socket("49.123.119.186",8999);
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw , true); //注意要写true,表示进行刷新
//发送信息
String sendcontent = "";
while(!"exitserver".equals(sendcontent)){ //当客户端输入exitserver,才退出之间的通信!
sendcontent = sc.nextLine();
pw.println(sendcontent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
情况3:客户端(客户端持续性的发送消息,并且接受到服务端反馈回来的信息,这种情况把服务端部署在Linux,客户端在Windows下,才更加直接的看到结果,如果都放在Windows下,IDE的控制台无法这样进行切换)
package socket;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/*
* 客户端socket
*/
public class MyClient {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
//连接服务器通信(填写服务器的IP和对应的端口号)
Socket s = new Socket("49.123.119.186",8999);
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw , true); //注意要写true,表示进行刷新
//发送信息
String sendcontent = "";
while(!"exitserver".equals(sendcontent)){ //当客户端输入exitserver,才退出之间的通信!
sendcontent = sc.nextLine();
pw.println(sendcontent);
//读取从服务器发送过来的消息
InputStreamReader is = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(is);
//获取发送过来的消息
String content = br.readLine();
//控制台打印下消息
System.out.println("i get a message from myserver:" + content);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
上面这个socket编程,还有很多方式可以进行,自己根据自己的需要来进行就可以了,关键是要明白这代码的含义!!!!
关于Linux的一些知识,我都会持续性的更新的哦!上面都是属于比较基础的内容,掌握了的话,还是能对Linux系统的大体进行了解,如果想真正学习Linux,那么还是需要花费很多功夫的,但是一旦对这个感兴趣了,还是挺好的,你就会发现Linux它吸引人的地方的!!!!!!继续努力!!!