Linux用户指南
目录
系统安装
安装配置
安装软件
- 配置软件源
- /etc/apt/sources.list
- https://lug.ustc.edu.cn/wiki/mirrors/help/ubuntu
- https://mirrors.ustc.edu.cn/repogen/
- google-chrome
# 自带flash插件 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- fcitx
# 在 系统|语言支持 中选择 fcitx 作为键盘输入法 apt-get install fcitx-googlepinyin
- jdk
apt install default-jdk # 配置环境变量 JAVA_HOME="/usr/lib/jvm/default-java"
- latex
wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/install-tl-ubuntu chmod +x install-tl-ubuntu ./install-tl-ubuntu --help # show help sudo ./install-tl-ubuntu # install latex
- stardict
sudo apt-get install stardict # 安装词库 ls *.bz2 | xargs -n 1 -I {} sudo tar -xjvf {} -C /usr/share/stardict/dic/ # 隐藏主窗口:选项|主窗口|Options|隐藏主窗口 # 打开主窗口 stardict - Lookup words
- virtualbox
# 将用户加入到vboxusers组,以便usb设备导入到虚拟机中 usermod -a -G vboxusers micky
实用配置
- 去掉桌面显示主目录下的文件
Ubuntu配置方法:编辑
~/.config/user-dirs.dirs
文件,直接清空即可。 - 触摸板配置
# /etc/X11/xorg.conf.d/70-synaptics.conf Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" Option "TapButton1" "1" Option "TapButton2" "3" Option "TapButton3" "2" Option "VertEdgeScroll" "on" Option "VertTwoFingerScroll" "on" Option "HorizEdgeScroll" "on" Option "HorizTwoFingerScroll" "on" Option "CircularScrolling" "on" Option "CircScrollTrigger" "2" Option "EmulateTwoFingerMinZ" "40" Option "EmulateTwoFingerMinW" "8" Option "FingerLow" "30" Option "FingerHigh" "50" Option "MaxTapTime" "125" Option "VertScrollDelta" "-111" Option "HorizScrollDelta" "-111" Option "DialDelta" "-1"
- 语言环境
中文环境下需要通过如下命令添加
zh_CN.UTF-8
支持:sudo dpkg-reconfigure locales # add zh_CN.UTF-8 sudo locale-gen zh_CN.UTF-8 sudo locale
如果没有添加中文支持,在启动文本编辑程序时可能出现如下提示而无法输入中文。
(process:3747): Gtk-WARNING **: Locale not supported by C library. Using the fallback 'C' locale.
为了能够在编辑程序中使用中文输入法,需要对文件
/etc/environment
做如下设置。LC_CTYPE="zh_CN.UTF-8"
- DNS配置
在 /etc/network/interfaces 中添加 dns-nameservers/dns-search/dns-domain 等配置
- 终端
Tmux是一个支持分屏的终端,可以直接通过apt-get安装:
sudo apt-get install tmux
在gnome-terminal中输入tmux即可进入tmux终端。 Tmux基本概念包括:
- server
- 输入tmux命令开启一个服务
- session
- 一个服务包含多个会话
- window
- 一个会话包含多个窗口
- pane
- 一个窗口包含多个面板
系统管理
网络管理
基本配置
基本网络接口控制可以通过ifconfig
命令配置,但是该命令只能临时配置,持久化需要通过配置文件实现。
ifconfig eth0 up|down # 开启/关闭 ifconfig eth0[:1] 192.168.2.10 [netmask 255.255.255.0] [broadcast 192.168.2.255] ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF ifconfig eth0 mtu 1024 # 设置MTU ifconfig eth0 arp|-arp # 启用/关闭ARP协议 ifconfig eth0 promisc|-promisc # promisc表示不会丢弃别人的包 ifconfig eth0 add 33ffe:3240:800:1005::2/64 # 配置IPv6地址 ifconfig eth0 del 33ffe:3240:800:1005::2/64 # 删除IPv6地址
永久修改MTU:
# -- CentOS / RHEL / Fedora: /etc/sysconfig/network-scripts/ifcfg-eth0 MTU="1500" # service network restart IPV6_MTU="1280" # for IPv6 # -- Debian / Ubuntu: /etc/network/interfaces mtu 9000 # /etc/init.d/networking restart
用户管理
用戶管理
账户管理相关配置文件如下表所示。
配置 | 功能 |
---|---|
/etc/passwd | 每个用户一行,用户基本信息 |
/etc/shadow | 每个用户一行,包括加密密码 |
/etc/group | 系统中的用户组 |
/etc/default/useradd | 命令useradd默认会加入的组 |
/etc/login.defs | 用于配置/etc/shadow |
useradd -G group user # 将用户加入指定组 useradd -G admins,ftp,developers user # 将用户加入多个组 useradd -g developers user # 将用户加入基础组,一个用户只能有一个基础组 usermod -a -G ftp user # 将已有用户append到指定组 usermod -g www user # 更换用户基础组 groupadd developers # 添加一个新的用户组 id user # 查看一个用户id信息以及在哪些组
将用户加入sudo组之后,配置/etc/sudoers
添加如下行即可使用sudo命令:
# using command add user to sudo group: usermod -a -G sudo <username> # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
设备管理
时间配置
debian下的时间通常比windows快8个小时,这在双系统上很容易测试出来。通过如下命令可以让其和windows时间相同:
hwclock -w --localtime
引导配置
- 通过USB Live CD安装grub
sudo mount /dev/sda5 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /sys /mnt/sys sudo mount --bind /proc /mnt/proc sudo mount /dev/sdaX /mnt/boot # only if you separate boot partition sudo chroot /mnt sudo grub-install --root-directory=/mnt /dev/sda
- 处理隐藏GRUB
如果执行
update-grub2
更新grub动作的时候能看到如下提示信息,则说明GRUB被隐藏了,启动的时候也看不到选择界面。Generating grub configuration file … Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
处理办法是编辑
/etc/default/grub
注释掉GRUB_HIDDEN_TIMEOUT
行。 - 通过GRUB rescue修复grub
grub> set pager=1 grub> ls (hd0) (hd0,msdos2) (hd0,msdos1) grub> ls (hd0,1)/ lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/ lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old grub> cat (hd0,1)/etc/issue Ubuntu 14.04 LTS \n \l grub> set root=(hd0,1) grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub> initrd /boot/initrd.img-3.13.0-29-generic grub> boot # 有些Linux系统已经有了超链接,可以采用更简单的写法 grub> set root=(hd0,1) grub> linux /vmlinuz root=/dev/sda1 grub> initrd /initrd.img grub> boot
如果GRUB rescue shell和通常的不一样,可以载入模块normal.mod和linux.mod。
grub rescue> set prefix=(hd0,1)/boot/grub grub rescue> set root=(hd0,1) grub rescue> insmod normal grub rescue> normal grub rescue> insmod linux grub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub rescue> initrd /boot/initrd.img-3.13.0-29-generic grub rescue> boot
最好在启动之后永久性的修复一下。
# update-grub Generating grub configuration file ... ... done # grub-install /dev/sda Installing for i386-pc platform. Installation finished. No error reported.
软件管理
Debian/Ubuntu
软件包管理主要需要熟悉的命令:dpkg
、apt-cache
、apt-get
、apt-file
等。
查询软件包状态信息
dpkg -l | head Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=========================-===============================-============-============ ii account-plugin-aim 3.8.6-0ubuntu9.2 amd64 Messaging ac ii account-plugin-facebook 0.11+14.04.20140409.1-0ubuntu2 all GNOME Contro ii account-plugin-flickr 0.11+14.04.20140409.1-0ubuntu2 all GNOME Contro ii account-plugin-google 0.11+14.04.20140409.1-0ubuntu2 all GNOME Contro ii account-plugin-jabber 3.8.6-0ubuntu9.2 amd64 Messaging ac
对安装包的操作:
# ref: dpkg man page dpkg --listfiles <package> # 查询属于软件的文件 dpkg -s <package> # 查询软件详细信息 dpkg -S <package> # 从安装包中查询文件名
Ubuntu下还需要熟悉如下命令:
apt-cache search # 搜索软件包 apt-cache show # 获取软件包相关信息 apt-get remove apt-get remove --purge apt-get build-dep # 安装编译环境
PPA叫Personal Package Archives,添加好PPA源之后在/etc/apt/sources.list.d/
目录下就能看到对应的列表。
sudo add-apt-repository ppa:user/name # 添加PPA sudo add-apt-repository -r ppa:username # 删除PPA
文件系统
文件系统
- 修改磁盘卷标
sudo e2label DEV LABEL # ext3/ext4 sudo btrfs filesystem label DEV LABEL # btrfs sudo ntfslabel DEV LABEL # ntfs
- 启动NFS服务
安装NFS服务工具:
sudo apt-get install nfs-kernel-server
编辑
/etc/exports
添加如下一行。/home/micky/dev/nfs *(ro,sync,no_root_squash)
重启NFS服务。
sudo service nfs-kernel-server restart
客户端只需要挂载即可使用:
mount -t nfs -o proto=tcp,port=2049,nolock 192.168.1.67:/home/micky/dev/nfs /mnt/
- 启动NFS服务 on Centos
yum -y install nfs-utils rpcbind vi /etc/exports /share *(rw,sync,no_root_squash) service rpcbind start service nfs start on client: mount -t nfs -o proto=tcp,port=2049,nolock 192.168.153.59:/data /home/nfs59
- 自动挂载USB设备
创建文件
/etc/udev/rules.d/87-usb-automount.rules
KERNEL!="sd[a-z][0-9]", GOTO="exit_automount" # Import FS info IMPORT{program}="/sbin/blkid -o udev -p %N" # Get a label if present, otherwise specify one ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}" ENV{ID_FS_LABEL}=="", ENV{dir_name}="Disk-%k" # Global mount options ACTION=="add", ENV{mount_options}="relatime" # Filesystem-specific mount options ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002" # Mount the device ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}" # Clean up after removal ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount /dev/%k" ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}" # Exit LABEL="exit_automount"
更新配置:
udevadm control --reload-rules
- rsync
1,rsync可以再中断传输之后恢复传输 2,rsync只传输源文件和目标文件之间不一致的部分 3,rsync可以执行完整或增量备份 4,可以使用基于ssh等方式传输文件 5,可以保持原有文件的所有属性信息
Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST Usages with just one SRC arg and no DEST arg will list the source files instead of copying.
常用选项
- -a, –archive
- 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
- -r, –recursive
- 对子目录以递归模式处理
- -l, –links
- 保留软链接
- -p, –perms
- 保持文件权限
- -t, –times
- 保持文件时间信息
- -g, –group
- 保持文件属组信息
- -o, –owner
- 保持文件属主信息
- -D, –devices
- 保持设备文件信息
- -c, –checksum
- 打开校验开关,强制对文件传输进行校验
- -v, –verbose
- 详细模式输出
- -H, –hard-links
- 保留硬链接
- -E, –executability
- 保留可执行权限
- –progress
- 显示进度
- –log-file=FILE
- 指定日志文件
- -n, –dry-run
- 显示哪些文件将被传输
- -u, –update
- 只进行更新,跳过比源头更新的文件
- -b, –backup
- 创建备份,被覆盖的文件会被重命名为~filename
- –suffix=SUFFIX
- 定义备份文件前缀
- –backup-dir=DIR
- 指定备份目录
- -w, –whole-file
- 完全复制,不进行增量检测
- -x, –one-file-system
- 不跨越文件系统边界
- -R, –relative
- 使用相对路径信息
- -z, –compress
- 在传输时对备份文件进行压缩处理
- -S, –sparse
- 对稀疏文件进行特殊处理以节省DST的空间
- -q, –quiet
- 精简输出模式
- –existing
- 只备份DST存在的文件,忽略新建文件
- –delete
- 删除DST有而SRC没有的文件
- –delete-excluded
- 删除DST中被指定排除的文件
- –delete-after
- 传输结束之后再删除
- –ignore-errors
- 当删除出现错误时,忽略错误并继续删除
- –force
- 强制删除非空的目录
- –bwlimit=KBPS
- 限制IO带宽
符号链接选项说明:
- –copy-links
- 将所有链接变成普通文件
- –links –copy-unsafe-links
- 复制安全链接,不安全链接变为普通文件
- –links –safe-links
- 复制安全链接,跳过不安全链接
- –links
- 复制所有符号链接
- –copy-unsafe-links
- 不安全链接变为普通文件,跳过安全链接
- -K, –keep-dirlinks
- 保留目录符号链接
- -k, –copy-dirlinks
- 替换目录符合链接为普通目录
# 全量同步命令 rsync -acvKHE --progress --log-file=rsync.log SRC DST # 增量同步命令 rsync -acvKHEu --progress --log-file=rsync.log SRC DST # 显示同步列表 rsync -acvKHEn SRC DST