开机遇到grub rescue怎么办?

  1. 在grub rescue>下输入:

      ls

      列出硬盘分区信息,例如:

      (hd0) (hd0,msdos10) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos1)

  2. 寻找grub所在的分区

      如果/boot单独分区了,输入 ls (hd0,X)/grub

      如果没有对/boot/单独分区,输入 ls (hd0,X)/boot/grub

      如果出现以下信息,表示找到了grub所在的分区

      ./ ../gfxblacklist.txt unicode.pf2 i386-pc/ locale/ fonts/ grubenv grub.cfg

  3. 设置 root, prefix,载入模块

    3.1) set root=(hd0,X)

    3.2) 如果/boot单独分区,输入set prefix=(hd0,5)/grub,如果没有对/boot单独分区,输入set prefix=(hd0,5)/boot/grub

    3.3) insmod normal # 实际我使用的是insmod /grub/i386-pc/normal.mod(/boot单独分区了)

    3.4) normal

    3.5) 选择进入ubuntu 

  4. 修复grub

    4.1) sudo update-grub

    4.2) sudo grub-install /dev/sda

Done


这篇文章: 有用 无用

Linux 关于系统的一些命令

# 查看系统开机时间
who -b /var/log/wtmp
who -b

# 查看进程树
ps axuwwf

# 查看进程运行的时间
ps -eo pid,etime,cmd

# 系统日志的查看

tail -f /var/log/{kern.log,dmesg,syslog}

dmesg

dmesg -c # clear kernel ring buffer message to '/var/log/dmesg' file

dmesg -wH # since kernel 3.5.0 

watch -n 1 "dmesg | tail -n $((LINES - 6))"

# netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
# -p Show the PID and name of the program to which each socket belongs.
# -a Show both listening and non-listening sockets. 
# -l Show only listening sockets. (These are omitted by default.)
# -n Show numerical addresses instead of trying to determine symbolic host, port or user names.
# --tcp|-t
# --udp|-u    
netstat -a -p | grep LISTEN

# 查找 process IDs
# pgrep
# -f The pattern is normally only matched against the process name.  When -f is set, the full command line is used.
pgrep -u root,www-data memcached
kill `pgrep memcached`
killall memcached

# find the process ID of a running program
# pidof
kill $(pidof memcached)

# diff
diff -u -d

这篇文章: 有用 无用

Linux 关于账户的一些命令

# 创建一个组
# groupadd 
groupadd dev

# addgroup
addgroup dev

# 创建一个用户
# useradd - create a new user or update default new user information
useradd -g dev -m -d /home/sxn -s /bin/bash sxn # 如果不指定-s的话,会默认使用/etc/default/useradd里面的SHELL设置

# adduser
adduser --ingroup dev --home /home/sxn --shell /bin/bash sxn # 如果不指定--shell的话,会默认使用/etc/adduser.conf里面的DSHELL设置

# 删除一个用户
userdel sxn
deluser sxn

# 查看用户信息
id - print real and effective user and group IDs  # id 

# 如何修改hostname
# 1) 临时修改主机名
sudo hostname $hostname

# 2) 永久修改主机名
sudo vi /etc/hostname # 打开/etc/hostname文件,将原有的主机名更换为现有的主机名
sudo vi /etc/hosts # 将 ip 地址对应的原有主机名修改为现有主机名

这篇文章: 有用 无用

硬盘的挂载

什么是 sda sdb

/dev/sda 表示第一块硬盘

/dev/sda1 表示第一块硬盘的第一个分区

/dev/sda2 表示第一块硬盘的第二个分区

/dev/sdb 表示第二块硬盘

怎样查看硬盘

sudo fdisk -l

怎样查看已经挂载的硬盘

df -h    
mount
nfsstat -m
cat /etc/mtab
cat /etc/fstab

怎样挂载硬盘

# -o 如果有多个参数,用","隔开
mount -a # 依照配置文件 /etc/fstab 的数据将所有的未挂载的磁盘都挂载上来
mount /dev/sdc2 /mnt/sdc2 # 挂载Ext2/Ext3文件系统
mount -t vfat -o iocharset=cp950 /dev/sdb1 /mnt/flash  # 挂载U盘

怎样将设备文件卸载

unmount [-fn] 挂载点 
-f 强制卸载 
-n 不更新 /etc/mtab 的情况下卸载    

unmount /mnt/flash

文件系统 NFS

Network File System

挂载上了,但是 df -h 看不到

挂载的时候需要添加 -o nfsvers=2 或者 -o vers=2

nfsvers=2 or nfsvers=3 — Specifies which version of the NFS protocol to use. This is useful for hosts that run multiple NFS servers. If no version is specified, NFS uses the highest supported version by the kernel and mount command. This option is not supported with NFSv4 and should not be used.

这篇文章: 有用 无用

curl 的一些用法

  1. curl -o|--output $filename www.baidu.com 或 curl www.baidu.com > filename # 保存网页至filename

  2. curl -O|--remote-name $url # e.g. curl -O http://www.etao.com/sitemap.xml -O http://www.amazon.com/robots.txt

  3. curl -I|--head baidu.com # 发送 HEAD 方法给 http server, 显示 header 信息

  4. curl -i|--include $url # 输出中包含 HTTP-header 信息

  5. curl -D|--dump_header $filename $url # 把 response header 信息写入文件

  6. curl -L|--location jd.com # follow redirect

  7. curl -A|--user-agent "[User Agent]" baidu.com # 设置User Agent

  8. curl -e|--referer $referer $url # 设置 $referer

  9. curl -b|--cookie "NAME1=VALUE1; NAME2=VALUE2" $url # 设置 cookie

  10. curl -H|--header 'Content-type:application/xml' $url # 设置 request header 信息

  11. curl -v|--verbose $url # curl HTTP 详情

  12. curl -x|--proxy <[protocol://][user@password]proxyhost[:port]>

    # This option overrides existing environment variables that set the proxy to use. If there's an environment variable setting a proxy, you can set proxy to "" to override it.

  13. curl --socks5 127.0.0.1:7070

POST
  1. curl -X|--request # e.g: curl -X POST

  2. curl --data-binary @$file|$str $url # to post data purely binary, post $url $file or $str

  3. curl -d|--data|--data-ascii @$file|$str $url # post $url $file or $str

  4. curl --data-urlencode @$file|$str $url # (HTTP) similar to the other --data options with the exception that this performs URL-encoding.

  5. curl -F|--form # POST data 使用 Content-Type multipart/form-data.

    e.g: curl -F password=@/etc/passwd www.foo.com

    e.g: curl -F "web=@index.html;type=text/html" www.foo.com

    e.g: curl -F "file=@localfile;filename=nameinpost" www.foo.com

    e.g: curl -F file=@file1 -F file=@file2 www.foo.com

如何给curl添加代理
vi .curlrc
添加socks5 = "127.0.0.1:1080"

这篇文章: 有用 无用

ubuntu 的一些设置和快捷键

这些设置和快捷键都是在 Unity 3D 下的

$ echo $DESKTOP_SESSION # 显示 ubuntu 则是 Unity 3D

长按 Super键(就是win键)就会显示快捷键列表


Ctrl+Super+d 最小化所有窗口

Ctrl+Super+Up 最大化当前窗口

Ctrl+Super+Down 恢复或最小化当前窗口


怎样横向平铺窗口?

试试 Ctrl+Alt+数字小键盘8 和 Ctrl+Alt+数字小键盘2

怎样纵向平铺窗口?

试试 Ctrl+Super+左方向键 和 Ctrl+Super+右方向键


怎样在左侧 Launcher 中显示 Show Desktop?

1) sudo apt-get install compizconfig-settings-manager

2) 打开 CompizConfig Settings Manager, 找到 Ubuntu Unity Plugin, 点击 Experimental, 勾选 Show "Desktop Icon" in the launcher


怎样自动登录?

1)sudo vi /etc/lightdm/lightdm.conf

2)添加

autologin-user=<username>
autologin-user-timeout=0

怎样用命令开关屏幕?

xset dpms force off
xset dpms force on

加入crontab, 一小时休息 5 分钟
30 9-18/1 * * * DISPLAY=:0 /usr/bin/xset dpms force off 
35 9-18/1 * * * DISPLAY=:0 /usr/bin/xset dpms force on

怎样禁用Alt弹出HUD?

System Settings -> Keyboard -> Short-cuts -> Click "Key to show the HUD" -> Pressing "Backspace"

怎样只升级某个软件?

apt-get --only-upgrade install chromium-browse  # 只升级 chrome 浏览器
apt-get --only-upgrade install firefox  # 只升级 firefox

这篇文章: 有用 无用

linux tar命令

tar [ctzxvpf] 压缩文件

c --create: 建立一个压缩文件

x --extract : 解开一个压缩文件

t --list : 查看压缩文件里面的文件

z --gzip : 是否同时具有 gzip 的属性或是否需要用 gzip 压缩

j --bzip2 : 是否同时具有 bzip2 的属性或是否需要用 bzip2 压缩

v --verbose : 解压或压缩的过程中显示文件

f --file : 使用档名,在 f 之后要立即接档名,不要再加参数

p --preserver : 保留原文件属性

-C --directory : 指定解压目录


这篇文章: 有用 无用

linux 的一些命令

# watch - execute a program periodically, showing output fullscreen
watch -n 1 date # 每秒执行一次 date 命令
watch -n 1 "date +%T"

# netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
# -p Show the PID and name of the program to which each socket belongs.
# -a Show both listening and non-listening sockets. 
# -l Show only listening sockets. (These are omitted by default.)
# -n Show numerical addresses instead of trying to determine symbolic host, port or user names.
# --tcp|-t
# --udp|-u    
netstat -a -p | grep LISTEN

# 打印文件第3行
sed -n '3p' file

# 文件去空行
grep -v '^$' file > newfile

# 查找 process IDs
# pgrep
# -f The pattern is normally only matched against the process name.  When -f is set, the full command line is used.
pgrep -u root,www-data memcached
kill `pgrep memcached`
killall memcached

# find the process ID of a running program
# pidof
kill $(pidof memcached)

# 查看系统开机时间
who -b /var/log/wtmp
who -b

# 查看进程树
ps axuwwf

# 查看进程运行的时间
ps -eo pid,etime,cmd

# dmesg

这篇文章: 有用 无用

ubuntu 命令 dpkg -l

dpkg -l

每条记录对应一个软件包,每条记录的第一, 二, 三个字符是软件包的状态标识, 后边依此是软件包名称,版本号, 和简单描述。

关于每个状态,可以参考

man dpkg-query

关于每个状态的描述,可以参考

man dpkg # 搜索 Package states

第一个字符为期望值,它包括:

  • u (Unknown) 状态未知,这意味着软件包未安装,并且用户也未发出安装请求。
  • i (Install) 用户请求安装软件包。
  • r (Remove) 用户请求卸载软件包。
  • p (Purge) 用户请求清除软件包。
  • h (Hold) 用户请求保持软件包版本锁定。

第二个字符是软件包的当前状态,它包括:

  • n (Not-installed) 软件包未安装。
  • i (Installed) 软件包安装并完成配置。
  • c (Config-files) 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中。
  • U (Unpacked) 软件包被解包,但还未配置。
  • F (Half-configured) 试图配置软件包,但是失败了。
  • H (Half-installed)软件包安装,但是但是没有成功。

第三个字符是错误状态,有四种状态。第一种状态标识没有问题,为空。其它三种包括:

  • R (Reinst-required) 软件包被破坏

这篇文章: 有用 无用