关于Linux的学习路径
Enjoy Linux and thank you for choosing Linux Mint
一、对于初学者,先熟悉Linux系统,建议读《鸟哥的私房菜》;
二、对于有C基础的同学,先在用户态下编程,建议阅读《Linux C编程实战》和《Unix/Linux编程实战教程》,然后逐步过渡到Linux内核;
三、入门的同学,可以阅读《Linux操作系统原理与应用》,从编写内核模块入手,一定要动手实践,从理论到实践,从实践上升到理论。如果没有操作系统的原理基础,建议阅读《计算机的心智,操作系统之哲学原理》。
《鸟哥的私房菜》 Linux操作系统使用
=>《Linux C编程实战》和《Unix/Linux编程实战教程》 用户态下编程
=>《Linux操作系统原理与应用》和《计算机的心智,操作系统之哲学原理》 内核态编程。
linux 编程从入门到精通
linux 内核完全剖析
tcp/ip详解:卷1,2,3
Lintmint 17 安装
1、分区:(1) /boot 64m ext4(2)swap 2G ram (3) / 30G ext4 (4)/home ext4 剩余空间
2、 安装无线驱动: (1)插入U盘安装盘 (2)系统管理-》驱动管理 中安装无线驱动(3)打开无线开关(4)配置无线连接.
Load the b43 module
$ sudo modprobe b43
To make it work automatically
$ sudo su # echo "b43" >> /etc/modules
3、连接网络后,设置软件源,在国内用163和sohu的源比较, “更新管理器”中更新系统软件,更新firefox至最新版
4、安装输入法:Fcitx 小企鹅输入法, fcitx-config-gtk
sudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update sudo apt-get install fcitx //fcitx主程序 sudo apt-get install fcitx-config-gtk //fcitx的gtk的设置图形界面 sudo apt-get install fcitx-tools sudo apt-get install fcitx-frontend-gtk3 fcitx-ui-classic 安装完成后注销,重新登陆。 fcitx-frontend-all:fcitx在所有环境下的前端 fcitx-module-cloudpinyin:fcitx的云拼音模块。 6.fcitx-ui-classic:fcitx的经典UI显示 模块。(此软件包不能被fcitx-ui-light或者fcitx-ui-qimpanel代替,应为该包默认包含着fcitx-module- x11,有了它才能在让fcitx在图形界面上显示出输入框。) 在软件管理器中搜索安装输入特定语言所需的组件: (1)简体中文拼音:fcitx-sunpinyin(Sunpinyin输入法引擎的fcitx封装)或fcitx-googlepinyin或fcitx-pinyin。 (2)简体中文五笔:fcitx-table-wubi(五笔输入法)或fcitx-table-wbpy(五笔拼音输入法)。 (3)繁体中文:fcitx-table-cangjie。 (4)通用的输入法码表: fcitx-table*,如:fcitx-table-erbi(二笔输入法)。 将fcitx设为默认: LinuxMint默认的输入法框架是IBUS,所以要将默认输入法框架改为fcitx。打开终端,输入“sudo im-config”,回车,输入用户密码回车后即可打开输入法配置对话窗口,单击“OK”,在下一个弹出的窗口中单击“Yes”,在接下来弹出的窗口中选中“fcitx”,单击“OK”。注销重新登录后即可。 一般情况下系统会自动将fcitx设为开机启动,否则,在“系统设置-开机和关机-自动启动”中添加fcitx。 如果fcitx无法正常使用,在软件管理器(mintInstall)中检查一下fcitx的依赖是否安装齐全(下面的包是针对KDE桌面的,Mint17尚未出KDE版的,所以搜索不到的忽略即可):dialog,fcitx-bin,fcitx-config- common,fcitx-config-gtk,fcitx-data,fcitx-frontend-all,fcitx-frontend- gtk2,fcitx-frontend-gtk3,fcitx-frontend-qt4,fcitx-libs,fcitx-module- dbus,fcitx-module-kimpanel,fcitx-module-lua,fcitx-module-x11,fcitx- modules,fcitx-ui-classic,im-config,libopencc1,libpresage- data,libpresage1,libtinyxml2.6.2,presage。此外建议安装的软件包:fcitx-tools,fcitx- m17n,kdebase-bin,plasma-widgets-addons。
5、Linux Mint防火墙:软件管理器下载和安装gufw(http://gufw.org/),这是不复杂的防火墙的GUI。
6、Pidgin 多协议聊天软件:(1)更新软件
7、QQ:webQQ
8、安装jdk:
0)删除以前的java
查看本机上是否还有java可选:$ sudo update-alternatives --list java
大神法二:
1、卸载之前,先检查Java对安装情况
# update-alternatives --display java
To check the setup before uninstalling Java.
接下来,删除符号链接
2、(替换(version)为你的java具体版本.命令 “java -version”来得到,我的所1.7.0_15,那么你可以用命令 update-alternatives --remove "java" "/usr/lib/jvm/jdk1.7.0_15/bin/java"来删除)
1 |
# update-alternatives --remove "java" "/usr/lib/jvm/jdk<version>/bin/java" |
2 |
# update-alternatives --remove "javac" "/usr/lib/jvm/jdk<version>/bin/javac" |
3 |
# update-alternatives --remove "javaws" "/usr/lib/jvm/jdk<version>/bin/javaws" |
确认这些符号链接(symlinks)是否都删除了
# java -version # javac -version # which javaws
后面俩命令必须要慎之又慎,不然可能毁掉你的系统.
# cd /usr/lib/jvm # sudo rm -rf jdk<version>
然后,
# update-alternatives --config java # update-alternatives --config javac # update-alternatives --config javaws
最后,
# vi /etc/environment
删除JAVA_HOME 这行环境变量。
-----------------分割线---------------------------------
要删除 OpenJDK (如果已安装的话)。首先,检查是安装的哪个 OpenJDK包。
# dpkg --list | grep -i jdk
移除 openjdk包:
# apt-get purge openjdk*
卸载 OpenJDK 相关包:
# apt-get purge icedtea-* openjdk-*
检查所有 OpenJDK包是否都已卸载完毕:
# dpkg --list | grep -i jdk完毕。
1)安装
tar -zxvf jdk-7u55-linux-x64.tar.gz
2)移动到指定目录
sudo mkdir /usr/lib/jdk
mv jdk1.7.0 /usr/lib/jdk
3)设置环境变量
sudo nano /etc/profile
在 /etc/profile 文件的最后面增加:
export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_10
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
4.将系统默认的jdk修改过来
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_45/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_45/bin/javac 300
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
4)验证
$ source /etc/profile 使更改的配置立即生效
#java -version
#javac -version
9 安装eclipse:
10 安装mysql:
11 安装phpmyadmin:
(1)软件管理器中安装或命令行,
sudo apt-get install phpmyadmin
(2)要求选择Web server:apache2或lighttpd,选择apache2,设置Mysql数据库密码。
然后连接phpmyadmin与apache2,www在/var/www/html,phpmyadmin在/usr/share /phpmyadmin目录,用命令cd /var/www/html sudo ln -s /usr/share/phpmyadmin /var/www/html 建立连接
删除phpmyadmin
sudo dpkg -P phpmyadmin
sudo rm -f /etc/apache2/conf.d/phpmyadmin.conf
sudo service apache2 restart
sudo apt-get autoremove phpmyadmin
sudo /etc/init.d/apache2 restart
http://localhost/phpmyadmin/
命令
1、ps -ef | grep XXX
显示所有当前运行的程序
2、kill -9 PID
彻底终止进程
3、sudo rfkill list
4、netstat -anp | grep 7003
netstat -apn | grep 7003
find -name *.lok
netstat命令参数说明
netstat -t参数:t代表TCP协议的套节字链接,除了t之外还有u(UDP)、w(RAW)、x(UNIX)套节字。
netstat -a参数:a就是(all)简写,意思就是包括全部正在监听的端口。
netstat -n参数:直接显示端口号,不是根据“/etc/server”显示端口对应的服务名称。
netstat -p参数:显示占用该端口号的进程。
netstat -l参数:显示正在被监听的端口。
ll 是 ls -l 的别名
5、sudo fping -e -f dns.txt
fping -e < dns.txt
6、 date:date +%x%t%T
7、rdate:rdate -s/-p ntp.ubuntu.com
8、ntpdate:ntpdate ntp.ubuntu.com
9、uptime:查看系统启动时间和运行时间
系统启动时间:
date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
系统运行时间:
cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'
修改dns
(1)sudo nano /etc/resolvconf/resolv.conf.d/head
nameserver 42.120.21.30
nameserver 223.5.5.5
nameserver 114.114.114.114
(2)sudo resolvconf -u
(3)ping www.google.com
cat /proc/cpuinfo
ssh无密码验证登陆 A机器->B机器
(1)登录A机器 cd ~/.ssh
(2)ssh-keygen -t rsa --------------------然后一直按回车键,就会按照默认的选项将生成的密钥保存在.ssh/id_rsa.pub文件中。
(3)sftp username@B机器
(4) put id_rsa.pub .ssh 或put id_rsa.pub .ssh/authorized_keys
(5) 登录B机器 cd ~/.ssh
(6) cp id_rsa.pub authorized_keys
正常情况下就可以无密码登录本机了
chmod 700 .ssh
chmod 600 authorized_keys
(7)验证:A机器 ssh username@B机器
查看/etc/sysconfig/iptables文件,发现里面没有80端口的配置规则,需要修改下iptables。
在root权限下执行:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
然后执行(即时生效,重启失效):
service iptables stop
service iptables start
要想重启后也生效,则执行:
chkconfig iptabels on
chkconfig iptabels off
发现是localhost这个东东问题,尽管可以将localhost解析为127.0.0.1(这个在hosts中也是这样配置的),但是真正ping 127.0.0.1却是ping不通的。于是,我恍然大悟,想起了在ifconfig命令看不到lo设备的问题。于是,用ifup lo来启动lo这个网络回路设备,或者ifconfig lo 127.0.0.1 来制定lo设备的IP地址为127.0.0.1,然后ifconfig可以看到lo了,ping localhost 也没有问题了。
下面简单说一下lo这个回路设备吧。
如果网卡还没有配置好,那么运行:#ifconfig系统只会输出以lo为首的部分。lo是look-back网络接口,从IP地址127.0.0.1就可以看出,它代表本机。无论系统是否接入网络,这个设备总是存在的,除非你在内核编译的时 候禁止了网络支持,这是一个称为回送设备的特殊设备,它自动由Linux配置以提供网络的自身连接。IP地址127.0.0.1是一个特殊的回送地址(即默认的本机地址),可以简单地使用ping 127.0.0.1 命令来测试回路地址是否正常。
另外,在IPv4中,回路设备通常用的地址是127.0.0.1,但是127.0.0.1~127.255.255.254都是映射到回路设备的;在IPv6中,回路设备只有一个地址 0:0:0:0:0:0:0:1 (也记为::1)。
通常情况下,在类Unix系统中,回路设备被标识为lo或者lo0
回路设备是一个虚拟的网络接口,是通过软件来实现的而没有真正连接到任何硬件。
iptables 所在目录 /etc/sysconfig/iptables
service iptables status 查看iptables状态
service iptables restart iptables服务重启
service iptables stop iptables服务禁用
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
linux下:
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
ctrl-/ 发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件。
Key Function
Ctrl-c Kill foreground process
Ctrl-z Suspend foreground process
Ctrl-d Terminate input, or exit shell
Ctrl-s Suspend output
Ctrl-q Resume output
Ctrl-o Discard output
Ctrl-l Clear screen
echo "ClientAliveInterval 60" >> /etc/ssh/sshd_config
echo "ClientAliveCountMax 1" >> /etc/ssh/sshd_config
重启SSH服务
service sshd restart
然后退出,重装进入就不会断开了.
修改方法服务器端
修改数据库配置文件/etc/my.cnf
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
重启MySQL(按照官方文档,这两个选项都是可以动态设置的,但是实际的经验是Server必须重启一下)