論壇:互動交流好去處,主打在線動漫及劇集 博客:您的私人空間,隨便上載與分享個人事物,完全免費 視頻:全國最大上載容量的視頻網站,無限制上載次數,無限制上載總量! 聯盟:提升您網站排名與流量,加入網站排行榜聯盟。

2007-7-20 11:42 admin
Linux Commands

[quote]目錄 :

位置 項目名稱
[list=1][*]Basics
[*]Printing
[*]Text
[*]File systems
[*]Parted
[*]Logical volumes
[*]Disk drives
[*]Users
[*]Processes
[*]Searching
[*]Time
[*]Audio
[*]CDs
[*]Firewire
[*]Wine
[*]Security
[*]Services
[*]Kernel
[*]Patch
[*]RPM
[*]Perl
[*]Archives
[*]Keyboard
[*]X Windows
[*]SSH
[*]Images
[*]Programming
[*]Scanner
[*]Networking
[*]Firewall
[*]Email
[*]Spam
[*]Apache
[*]MySQL
[*]DNS
[*]Router
[*]Bash
[*]Devices
[*]DHCP
[*]Configuration
[*]Regular expressions
[*]Bugs
[/list][/quote]

[b]Basics[/b]
Files and directories

        ls                # Show current directory contents
        ls -l $path        # Show details about the file or directory
        cd $dir                # Change current directory to $dir
        cd ..                # Change current directory to parent directory
        pwd                # Show current directory path
        mkdir $dir        # Create a directory
        cp $src(s) $dst # Copy $src file(s) to $dst
        cp $src(s) $dir        # Copy $src file(s) into the directory $dir
        mv $src $dst        # Move $src to $dst. Also used to rename files.
        mv $src(s) $dir        # Move a group of files into a directory
        rm $file(s)        # Remove (delete) files
        rmdir $dir(s)        # Delete empty directory(s)
        rm -rf $dirs(s)        # Delete files and/or directory(s) with their contents
        > $file                # Erase the contents of a file Copy a hierarchical directory

        cp -a $sourceDir $destDirBackup a hierarchical directory

        rsync -a --delete $sourceDir $destDir
       
        1) Sym links, ownership, permissions and hidden files are copied.
        2) A trailing "/" on either dir means "contents of".
        3) Only the files that need to be copied get copied.
        4) Files in the destDir but not in source are deleted. Change the owner of a file

        chown owner file        # owner only
        chown owner.group file  # owner & group
        chown .group file        # group only
        chown owner. file        # owner & group=ownerChange the permissions of a file

        chmod changes fileName
       
        The changes are a comma separated list of expressions.
        Each expression is of the form:
       
                users+permissions        # Add permissions
                users-permissions        # Remove permissions
               
        The users can be one or more of the letters:
       
                u        User          (Oner of the file)
                g        Group         (Group of users)
                o        Others        (Everyone else)
                OR:
                a        All        (Same as "ugo", the default)
               
        The permissions can be one or more of the letters:
       
                r        Read
                w        Write       
                x        Execute
               
        The user classes are specified in the order
        UserGroupOther, with three bits for each to
        enable or disable ReadWriteExecute.
       
        Example:
               
                chmod u+rwx,g+rw,o-rwx aFile
       
        Numerical equivalent:
               
                chmod 760 aFileShow disk usage of current dir or selected dir

        du -s <dir>Write to stdout

        echo anythingWrite to a file

        echo anything > <path> Append to a file

        echo anything >> <path> Update the modified time for a file

        touch <path> Quickly create an empty file

        > <path> Show differences between files

        diff -r leftDir rightDir Show files that differ without details

        diff -r -q leftDir rightDir Trace execution of a shell script

        sh -x <fileName> Monitor additions to a log file

        tail -f <fileName> Make a symbolic link

        ln -s <path> <name> List files in color

        ls --color=tty
        (Alias this to ls) List a single column of names only

        ls -1 List directories only

        find -type d -maxdepth 1
        (Alias this to lsd) List files in order of modification time

        ls -lrt List all open files and sockets

        lsof Run a shell script so it changes the environment

        source .bash_profile (or whatever script you changed) Run a command relative to another root file system

        chroot newroot command Execute a shell script and echo the commands for debugging

        sh -x yourScript

2007-7-20 11:48 admin
Printing

Print a file on the default printer

        lpr myfile Print a file on a selected printer

        lpr -P printer myfile Show a list of available printers

        lpstat -p Show the default printer

        lpstat -d Set the default printer for the user

        lpoptions -d LaserJet Set the default printer for everyone

        lpadmin -d LaserJet Show what's on the print queue

        lpq Remove a job from the print queue

        lprm nn Remove all jobs queued by the user

        lprm - Control the printers (has help for commands)

        lpc  Web interface for CUPS

        http://localhost:631/ Configure a remote Windows printer

        Determine the remote printer name:

                smbclient -L hostname -U username
                (In this case, the printer was called "Deskjet")

        1) Device: Windows Printer via Samba
        2) URI:    smb//administrator:password@sparksvaio/Deskjet
        3) Driver: HP New Deskjet Series Cups v1.1 (en) Configure a local printer-port printer

        Determine the remote printer name:

                smbclient -L hostname -U username
                (In this case, the printer was called "Deskjet")

        1) Device: Parallel Port #1 (Hewlett-Packard HP LaserJet 4000 Series)
        2) Driver: HP LaserJet Series CUPS v1.1 (en) Configure printers on a Linksys print server

        1) Select LPD/LPR Protocol.
        2) Device URIs for each port:
       
                lpd://Sc0405b5/L1
                lpd://Sc0405b5/L2

        3) Select the drivers
       
                HP New Deskjet Series Cups v1.1 (en)
                HP LaserJet 4000 Series  PS (en)  CUPS directory for manufacturer's ppd files

        /usr/share/cups/model CUPS ppd files added by me

        hp4000.ppd.gz
        hp970Cse.ppd
       
        These came from the sourceforge project sponsored by HP.
        The hp970Cse.pdd requires foomatic which requires a TON of
        perl stuff. If you don't want all this, the cup built-in
        "New Deskjet" works fine.

2007-7-20 11:48 admin
Text

Check spelling of a text file

        ispell myFile.txt Check spelling of one word: script version

        echo $1 | ispell -a | sed -n -e '/^\&/p' -e '/^\#/p'
       
        Put this expression in a shell script on your PATH. Cut out part of lines cols n-m

        cut -c n-m path Cut out part of lines n-eol

        cut -c n- path

2007-7-20 11:49 admin
File systems

Format a floppy disk

        fdformat /dev/fd0H1440
        mkfs -t msdos /dev/fd0H1440 1440

        When putting ext2 on a floppy, omit the su reserve:
       
                mkfs -t ext2 -m 0 /dev/fd0H1440 1440
       
        Some-but-not-all floppies can be enlarged:
       
                fdformat /dev/fd0u1722 Mount filesystems

        mount -t iso9660 -ro /dev/hdc /mnt/cdrom
        mount -t vfat /dev/hda5       /mnt/dos
        mount -t ext2 /dev/sda3       /mnt/jazz
        mount -t ntfs /dev/hda1       /mnt/nt
        mount -t smbfs //sparks750/c  /mnt/sparks750
        (See fstab below for more smbfs options)
        mount -t hfs  /dev/sda /mnt/jazz -o afpd -o uid=500
                (Currently, the afpd option hangs up the Mac...)
        mount -t nfs mac.sparks.com:/root /mnt/macroot
        To support nfs mounts, remote system must have /etc/exports:
                /root *.sparks.com(rw)  Make and mount 1Meg file system inside a file

        dd if=/dev/zero of=MyDiskImage.ext2 bs=1k count=1000
        mkfs -t ext2 MyDiskImage.ext2
        mkdir here
        mount -t ext2 -o loop MyDiskImage.ext2 here Make and format a Macintosh filesystem inside a file

        dd if=/dev/zero of=MacDiskImage.hfs bs=1k count=whatever
        hformat -l "HD1" MacDiskImage.hfs Show free space on all drives

        df Show details about a linux file system

        tune2fs -l /dev/hdax Create an ext3 file system

        mkfs -t ext2 -j /dev/hdax Convert ext2 to ext3

        tune2fs -j /dev/hdax Resize a file system (offline)

        Revert from ext3 to ext2 if necessary (see below)
        I have heard that this step is unnecessary.

        unmount /dev/hda1
        e2fsck -f /dev/hda1
        resize2fs /dev/hda1 newSizeInBlocks
        mount /dev/hda1 /mnt/point

        If newSize is not specified, the file system will grow to
        fill the partition.
        After shrinking a file system, you can shrink the partition to match.
        After growing a partition, you can grow the file system to match. Revert an ext3 file system to ext2

        umount /dev/hda1                        # Unmount the partition
        tune2fs -O ^has_journal /dev/hda1        # Turn off journaling
        e2fsk -y /dev/hda1                        # Check for errors
        mount -t ext2 /dev/hda1 /mnt/point        # Remount as ext2
        cd /mnt/point                                # Go to root directory
        rm -f .journal                                # Remove the journal
       
        You must update entry in fstab if this is a permanent change.
        Ext3 should be reverted to ext2 before resizing. Convert an ext2 file system to ext3

        tune2fs -j /dev/hda1

        Edit fstab to indicate ext3
        If this is the root partition, you need to use an initrd to boot.       
        See redhat documentation for details. Create and use an encrypted dm_crypt volume

        This is the new and prefered way to handle file system encryption.
        See the next section on the older "cryptoloop" method.
       
        You need a device to access a whole drive, a partition, a logical
        volume or a loopback file. We will use "myDev" for this example.
        A new filesystem will be created in this example.
       
        Create a dm_crypt mapping to the device
       
                cryptsetup create mymap mydev
               
                You will be prompted for the passphrase.
                The default cipher is AES 256.

        Now you can create and mount any normal filesystem:
       
                mkfs -t ext2 /dev/mapper/mymap
                mount -t ext2 /dev/mymap /mnt/mymount
       
        When you are finished using the volume:
       
                umount /mnt/mymount
                cryptsetup remove mymap
       
        When mounting a previously-created dm_crypt volume:
       
                cryptsetup create mymap mydev
                mount /dev/mapper/mydev /mnt/mymount Create and use an encrypted cryptoloop volume

        This is the older and depricated method for using an encrypted
        loopback filesystem. It depends on patched versions of of losetup
        that are not part of recent Linux distributions.
       
        First make a big file of random stuff:
       
                dd if=/dev/urandom of=myfile bs=1M count=50
       
        Load the crypto module group and your selected cypher:
       
                modprobe cryptoloop
                modprobe cipher-twofish
       
        Mount the file as an encrypted loopback device:
               
                losetup -e twofish /dev/loop0 myfile
       
        You will need to answer these questions:
       
                Available keysizes (bits): 128 192 256
                Keysize: 128
                Password :

        Now you can create and mount any normal filesystem:
       
                mkfs -t ext2 /dev/loop0
                mount -t ext2 /dev/loop0 /mnt/myMount
       
        When you are finished using the volume:
       
                umount /mnt/myMount
                losetup -d /dev/loop0
       
        To mount a previously-created cryptoloop volume:
       
                mount -t ext2 -o loop,encryption=twofish myfile /mnt/myMount

2007-7-20 11:49 admin
Parted

Preparation

        Run parted from a boot floppy if you need to resize root.
        Unmount other partitions first.
        First use df to see how much space is used if you intend
        to shrink a working partition. Partition types (ptype)

        primary, logical, extended File system types (ftype)

        ext2, FAT, hfs, linux-swap, ntfs, reiserfs Flags

        boot, root, swap, hidden, raid, lvm, lba Show the current layout

        print Resize a partition

        resize minor start end Create an unformatted partition

        mkpart ptype start end Create a new primary ext2 partition

        mkpartfs ptype ftype start end Remove a partition

        rm pnumber Change the partition state flag

        set pnumber flag state Perform a simple check

        check pnumber Make a new partition table (Destroys the whole disk)

        mklabel type Label types

        msdos, bsd, mac, pc98, sun, loop
       
        Note: You can match the decimal sizes of adjacent
        partitions. Parted takes care of details.

2007-7-20 11:50 admin
Logical volumes

Terminology

        Physical Volume - A whole disk or a partition on a disk.
        Volume Group - A collection of physical volumes.
        Logical volume - A "partition" on a Volume Group. Getting started

        If LVM has never been used on a system, first run
        vgscan to create the /dev directory and other structures.
       
        Each partition must have a partition type of 0x8E. (Use fdisk)
        (This does not apply if you are using a whole disk.) Define each physical volume

        pvcreate /dev/hdb        # A whole disk
        pvcreate /dev/hda3        # A partition
       
        An error may be reported if you try to create a physical
        volume from a whole disk that had partitions defined.
        To destroy the partition table for a whole disk:
       
        dd if=/dev/zero of=/dev/hdb bs=1K count=1
        blockdev --rereadpt /dev/hdb Create a volume group using several physical volumes

        vgcreate myVG /dev/hdb /dev/hda3

        Note: If you are using devfs, you must use the whole physical name
        not just the symbolic link in /dev. For example:
        /dev/ide/host0/bus0/target0/lun0/part1 Extend a volume group by adding another physical volume

        vgextend /dev/myVG /dev/hda5 Reduce a volume group by removing a physical volume

        vgreduce /dev/myVG /dev/hda3

        This can be done live, but you have to make sure all
        the extents in use on the physical volume are moved
        to another volume. To do this before executing the
        command shown above, you would use:

        pvmove /dev/hda3 Create a logical volume

        lvcreate --size 200M --name myVol myVG

        You can now use this logical volume like a normal partition

        mkfs -t ext2 /dev/myVG/myVol
        mount -t ext2 /dev/myVG/myVol /mnt/myMP Extend a logical volume to a specific size

        lvextend --size 12G /dev/myVG/myVol

        Does NOT extend the size of the file system! Extend a logical volume by adding a specific size

        lvextend --size +1G /dev/myVG/myVol
       
        Does NOT extend the size of the file system! Extend the file system and logical volume at the same time

        e2fsadm --size +2G /dev/myVG/myVol
        Sadly, there is no e2fsadm for LVM version 2...Extend the file system and logical volume (the old way)

        You have to unmount first
       
                umount /mnt/myMP
               
        Grow the volume

                lvextend --size +40G /dev/myVG/myVol
               
        Check the filesystem (It makes you do this before the resize)
               
                e2fsck -f /dev/myFG/myVol
               
        Resize the file system to take up all the available space

                resize2fs /dev/myVG/myVol Reduce a file system and logical volume at the same time

        e2fsadm --size -200M /dev/myVG/myVol Activate all volume groups at boot time

        vgscan
        vgchange --available y Remove a logical volume

        umount /mnt/myMP
        lvchange --available n /dev/myVG/myVol
        lvremove /dev/myVG/myVol Remove a volume group

        Make sure all the logical volumes are unmounted!
        vgchange --available n /dev/myVG
        vgremove /dev/myVG Snapshots

        A snapshot lets you do a backup of the instantanious state of
        a logical volume. You create a snapshot, back it up, and then
        delete the snapshot. The state of the snapshot volume is frozen
        while you're making the backup, while the original volume keeps
        changing.
       
        lvcreate --size 200M --snapshot --name snapVol /dev/myVG/myVol
        mount -t ext2 /dev/myVG/snapVol /mnt/snap
        rsync -a --delete /mnt/snap/ /mnt/backups/myVol
        umount /mnt/snap
        lvremove /dev/myVG/snapVol Diagnostics

        pvscan                        # Display all physcial volumes
        lvscan                        # Display all logical volumes
        pvdisplay /dev/hda4        # Display the state of a physical volume
        vgdisplay /dev/myVG        # Display the state of a volume group
        lvdisplay /dev/vg1/archVol # Display the state of a logical volume My server layout

        vgscan
        pvcreate /dev/hdb
        vgcreate vg1 /dev/hdb
        lvcreate --size 30G --name backVol vg1
        lvcreate --size 40G --name archVol vg1
        lvcreate --size  4G --name tempVol vg1
        mkfs -t ext2 -j /dev/vg1/backVol
        mkfs -t ext2 -j /dev/vg1/archVol
        mkfs -t ext2 /dev/vg1/tempVol

        pvcreate /dev/hda4
        vgcreate vg2 /dev/hda4
        lvcreate --size 5G  --name homeVol vg2
        lvcreate --size 9G  --name wwwVol vg2
        lvcreate --size 1G  --name spoolVol vg2
        lvcreate --size 3G  --name tempVol vg2
        mkfs -t ext2 -j /dev/vg2/homeVol
        mkfs -t ext2 -j /dev/vg2/wwwVol
        mkfs -t ext2 -j /dev/vg2/spoolVol
        mkfs -t ext2 /dev/vg2/tempVol

2007-7-20 11:50 admin
Disk drives

Basic hdparm syntax

        hdparm options /dev/hda Options

        -c  1        I/O support mode 1 (32 bit)
        -c  2        I/O support mode 2 (16 bit)
        -c  3        I/O support mode 3 (32 bit & sync)
        -m 16        Multi sector count 16 on
        -A  1        Enable drive read-ahead
        -a  8        Drive read-ahead count
        -d  1        DMA On
        -u  1        Enable interruptable driver (dangerous)
        -X 66        Ultra DMA mode 2 (dangerous, unnecessary)
        -X 34        Multiword DMA mode 2 (dangerout, unnecessary)
        -S  n        Spindown time in 5sec tics (0 <= n <= 240)
       
        -t        Perform & display drive test results
        -T        Perform & display Linux disk cache test Example tuning for my computer

        The big Maxtor on the HP has these settings.
        I think the PIO mode works best.

        hdparm -A 1 -a 8 -m 16 -d 1 -c 2 Boot time settings for hdparm

        /etc/sysconfig/harddisks

2007-7-20 11:51 admin
Users

Prompt for new password

        passwd Change your login shell program

        chsh Shut down and reboot or halt

        shutdown -r now
        shutdown -h now Adding or removing users

        useradd userName
        userdel        name
       
        In Redhat Land, useradd also creates and adds  the
        new user to a new unique group with the same name.Adding or removing groups

        groupadd name
        groupdel name Changing passwords

        passwd
        passwd user Adding or removing users from a group

        gpasswd -a user group
        gpasswd -d user group Change all sorts of stuff at once

        usermod loginName \
                -g newLoginGroup
                -G newGroup1,...,newGroupN
                -l newLoginName
                -d newHomeDirectory
                -u newUID
                       
        Using -G, the user will be removed from any group not listed.
        Using -l, the user still has their old home directory.
        You can't change the login name of a user who is currently logged in.
        See man page for more options. Log into a remote system with no password

        rlogin remoteIP

        The .rhosts file must be in the remote login directory.
        It contains the ipNames of allowed users.
        You can add a local username if not the same as remote.
        The .rhosts file must have read privilages only for owner.
        /etc/xinetd.d/rlogin must not be disabled.
        If you want to rlogin from a root account
        /etc/securetty must have an entry for "rlogin".

2007-7-20 11:51 admin
Processes

Show the current process list

        ps ax Kill a process by name

        killall name Kill a process by id number

        kill pid Kill a process that is being difficult

        kill -s 9 pid Run a command in the background

        command & Put an active command into the background

        First break with control Z, then
       
        bg List all the jobs you have running

        jobs Bring a job back to the forground

        fg Stop a background job

        kill Suspend a backgroud job

        stop Fix terminal that has fonts garbled by a binary dump

        Just type: <control>V <control>O

2007-7-20 11:51 admin
Searching

Find path to an executable file

        which command Find and print file names

        find adirectoryPath/ -name <pattern> Find and apply a command to each file found

        find path/ -name <pattern> | xargs <command> Find and apply a command (old way)

        find path -name <pattern> -exec <com> {} \; Find a pattern with recursive search and show file names

        find path -name "<filePattern>" -exec grep -l <pattern> {} \; Find a pattern in any and all files with recursive search

        find path | grep <pattern> Find and and confirm before doing a command

        find path/ -name <pattern> -ok <com> {} \; Find a pattern in files

        grep <pattern> <files...> Find a pattern in files with recursive search (new way)

        grep -rl <pattern> <start directory>

2007-7-20 11:52 admin
Time

Update the clock from a time server (Three steps)

        rdate -u -p -s ns.scruz.net # This gets the time and sets system time
        hwclock --systohc            # Write system time to cmos
        hwclock --adjust            # Apply a rate adjustment
       
        # The startup scripts normally take care of this:
       
        hwclock --hctosys <opt>            # Read system time from cmos
       
        The <opt> may be --localtime or --utc. For localtime, you
        need to have an /etc/localtime file which can be a copy or
        link to zoneinfo file. (These are in /usr/share/zoneinfo) Schedule a command for later execution

        Specific time

                at 10:25pm

        Relative time

                at now + 1 minute
                at 4pm + 3 days
       
        A prompt will appear for you to enter commands.
        Finish with EOF (control D)

        Show your pending jobs:

                atq
       
        Remove a job:
       
                atrm <job number> Start a timed server as the master clock (put in rc.local)

        timed -M -F localhost Start a timed client

        timed Use cron for periodic script execution

        Use a bash script in one of these directories:
       
        cron.daily
        cron.hourly
        cron.monthly
        cron.weekly Using 'at' from inside a bash script

        at 3am <<-EOF
                service tomcat restart
        EOF

2007-7-20 11:52 admin
Audio

Play samples from a file

        play test.wav Use 'play' on systems with artsd (such as kde)

        On these systems, /dev/dsp is always tied up by artsd.
        Use the artsdsp command to run any program that would
        normally access /dev/dsp directly:

                artsdsp play test.wav Record samples to a wav file

        Record a "normal" stereo wav file:
       
        rec -c 2 -f U -r 44100 -s w -v 8.0 test.wav
       
        Options:
       
        -c 2                Two channels (stereo)
        -r 44100        Sample rate
        -f        Sample encoding:
                 s        Signed linear (2's compliment)
                 u        Unsigned linear
                 U        U-law (logarithmic) U.S. standard
                 A        A-law (logarithmic) EU. standard
                 a        ADPCM (Adaptive Differential Pulse-Code Modulation)
                 i        IMA_ADPCM
                 g        GSM
        -s        Sample size:
                 b        8 bit bytes
                 w        16 bit words
                 l        32 bit long words
                 f        32 bit floats
                d        64 bit floats
                 D        80 bit IEEE floats
        -t        File format:
                au        Sun
                 cdr        CD track
                 gsm        GSM 06.10 Lossy Speech Compression
                wav        Windows RIFF (Header contains all params)
        -v        Set the volume
                1.0        No change
                2.0        Linear increase by 2.0
                0.5        Linear decrease by 2.0
                8.0        About right to balance with other .wavs
               
        The file format can be specified by giving the file
        a matching extension.
       
        ADPCM, IMA_ADPCM & GSM are intended for speech compression.
        U-law would be appropriate for music. Play sounds concurrently

        esdplay
       
        (Some people make this an alias for 'play') Reroute microphone through esd

        esdrec | esdcat Play an mp3 file

        mpg123 yourfile.mp3 Convert an mp3 file to a wav

        mpg123 -s yourfile.mpg > yourfile.raw

        The above command will display the bit rate and the sample rate.
        The output is 16 bit, signed pcm, little endian. No header.
       
                sox -c 2 -w -s -r xxx yourfile.raw yourfile.wav

        The xxx value must be the sample rate displayed by mpg123.
        You can pipeline mpg123 into sox. Use a - for the sox input.
       
        An easier way to do both steps:
       
                lame --decode yourfile.mp3 yourfile.wav Use sox to play (almost) any sound file

        sox inputOptions inputFile outputOptions outputFile

        Do a "man soxexam" to see many examples.
       
        Format options
       
        Channels
                -c n        Where n = 1,2 or 4
        Sample rate
                -r rate        Where rate is in Hertz
        Sample size
                -b         8 bits
                -w        16 bits
                -l        32 bits
        Encoding
                -s        Signed linear
                -u        Unsigned linear
                -U        U-law (U.S. logarithmic)
                -A        A-law (Euro logarithmic)
                -a        ADPCM (Adaptive pulse-code modulation)
                -i        IMA_ADPCM
                -g        GSM
                -f        Floating point
        Input file format is controled by the file extension:
                .wav        (You don't need to specify other options)
                .au        (Options may or may not be needed) Convert a wav to an mp3

        lame [-b bitrate] infile.wav outfile.mp3

2007-7-20 11:52 admin
CDs

Using cdrecord with non-scsi drives

        The primary tool described in the following sections is "cdrecord".
        The most current versions of this program accept normal Linux
        CD device names, e.g. "/dev/cdrom" and support both SCSI and
        ATAPI drives.
       
        Earlier versions of cdrecord only worked with SCSI drives and
        required the bizarre "x,y,z" drive name notation. Create a data CDR readable by Linux (-r) or Windows (-J)

        nice --18 mkisofs -l -J -r -V MyVolumeName sourceDirectory/  \
            | cdrecord speed=x dev=/dev/cdrom -data -

        To make a CDRW, add blank=fast to cdrecord options.
        Speed should be 8 for CDRs and 4 for CDRW on my HP 9200. Create an ISO image file from a directory of files

        mkisofs -l -r -J -V MyVolumeName -o myISOfile.iso.bin sourceDirectory/ Copy a raw DATA CD at the sector level. Source is on /dev/cdrom

        cdrecord -v dev=/dev/cdrom speed=2 -isosize /dev/cdrom Make a normal audio cd with tracks taken from mp3 files

        mpg123 -s file1.mp3 \
            | cdrecord speed=x dev=/dev/cdrom -audio -pad -swab -nofix - Fixate the CD

        cdrecord dev=/dev/cdrom -fix Rip a music CD track

        cdparanoia [-d device] trackRange result.wav Rip all the tracks on an audio cd to a set of wav files

        One wav per track:

        cdparanoia 1- -B Rip and convert one track to one mp3

        cdparanoia trackNumber - | lame -b 160 - result.mp3 Record an audio cd from a directory full of wav files

        One wav per track:

        cdrecord speed=s dev=/dev/cdrom -audio *.wav Track range examples

        1-        # Entire CD
        -- -3        # Beginning through track 3
        2-4        # Tracks 2 through 4 Create a CDR from an ISO image

        cdrecord speed=4 dev=/dev/cdrom -data imageFile.iso.bin
        For cdrw, add: blank=fast Create an ISO image file from a CD

        readcd dev=/dev/cdrom f=myImageFile.iso.bin Dealing with older versions of cdrecord

        Older versions of cdrecord require scsi drivers or
        scsi emulation with atapi drives. The following sections
        show how to deal with this situation. Make your ide cdrom look like a scsi device

       
        The cdrecord program wants to see scsi devices:
        The cdrom module must be loaded first, but it will
        normally be loaded if it was operating in ide mode.
        Otherwise, do an "insmod cdrom" first.
       
        rmmod ide-cd
        insmod cdrom
        insmod sr_mod
        insmod ide-scsi

        The scsi-mod will be loaded if you have
        a real scsi interface in your machine.
        Otherwise, # it must be loaded before sr_mod. Restore the cd to normal (IDE) operation

        rmmod sr_mod ide-scsi
        insmod ide-cd Make atapi cd drives look like scsi at boot time

        For this example, assume you have two ide drives:
        hdc and hdd.
       
        Method 1: Add this line in lilo.conf to the kernel section:

            append="hdc=ide-scsi hdd=ide-scsi"

        Method 2: Add these lines to /etc/modules.conf:
       
            options ide-cd ignore=hdc
            options ide-cd ignore=hdd
            pre-install sg modprobe ide-scsi
            pre-install sr_mod modprobe ide-scsi
            pre-install ide-scsi modprobe ide-cd Devices for the cd drives in scsi mode

        /dev/scd0        cdram
        /dev/scd1        cdrom
        /dev/scd1        dvd Device names for cd drives in ide mode

        /dev/hdc        cdram
        /dev/hdd        cdrom
        /dev/hdd        dvd List all SCSI devices visible to cdrecord in x,y,z format

        The cdrecord program will use "dev=x,y,z" notation where x,y,z are
        shown by the command:
       
        cdrecord -scanbus

2007-7-20 11:52 admin
Firewire

Load the firewire packet module

        modprobe ieee1394 Load the firewire card controller

        modprobe ohci1394

        The ohci module will recognize your disk as a SCSI device
        and automatically load the serial bus protocol (sbp2) module.
        If you need to see what's going on for debugging, do a
        tail -f /var/log/messages in another shell window before
        you load the module. Scan the bus for the SCSI address

        cdrecord --scanbus
       
        Mine was at SCSI addresss 2,0,0 so it is /dev/sdb.
        If the result had been 1,x,y it would be on /dev/sda. Use fdisk to find the partition name

        fdisk /dev/sdb
       
        I found the DOS partition on the ipod at /dev/sdb2 Create a mount point

        mkdir /mnt/ipod Mount the device by hand

        mount -t vfat /dev/sb2 /mnt/ipod Example fstab entry

        /dev/sb2  /mnt/ipod  vfat  noauto 0 0 Mount the device when an fstab entry exists

        mount /mnt/ipod Before you remove the device!

        umount /mnt/ipod
        rmmod sbp2
       
        After the rmmod, the iPod will tell you that
        it's ok to disconnect. This precaution should
        be observed before unplugging any firewire disk. Remounting (With firewire and ohci already loaded)

        modprobe sbp2
        mount /mnt/ipod

2007-7-20 11:53 admin
Wine

Changes in /etc/wine/wine.conf

        [Drive C]
        "Path" = "/mnt/win"
        [wine]
        # In this section, change all the paths: substituting
        # winnt for windows if that applies to your windows
        # installation mounted at /mnt/win

        # iPod support for EphPod       
        [Drive G]
        "Path" = "/mnt/ipod"
        "Type" = "hd"
        "Label" = "iPod Drive"
        "Filesystem" = "win95"

        # To share EphPod config file with windows
        # Drive E is where Windows sees the server
        [Drive H]
        "Path" = "/mnt/server"
        "Type" = "network"
        "Label" = "Server"
        "Filesystem" = "win95"

2007-7-20 11:53 admin
Security

Use RPM to verify all packages

        rpm -Va
       
        The code letters:
        S file Size differs
        M Mode differs (includes permissions and file type)
        5 MD5 sum differs
        D Device major/minor number mis-match
        L readLink(2) path mis-match
        U User ownership differs
        G Group ownership differs
        T mTime differs
        c A configuration file
       
        A streamlined report that ignores date-only changes:
       
        rpm -Va | grep -v  ".......T"
       
        To make this a cron job that mails the result:
       
        rpm -Va | grep -v ".......T" | mail myself@mydomain
       
        To skim off acceptable changes
       
        rpm -Va | grep -v ".......T" | grep -vf rpmChanges | \
                mail myself@mydomain
       
        Append any new acceptable changes to the rpmChanges file.

2007-7-20 11:53 admin
Services

Control individual services

        service <serviceName> <selector>
       
        Typical selectors are: start, stop, restart, status.
       
        If you run the command without a selector, it will display
        a list of possible selectors. Standard run levels identify groups of system services

        0        Halt
        1        Single user
        2        Multiuser, no networking, local additions
        3        Multiuser, networking, local additions
        4        Multiuser, networking, no local additions
        5        Same as 3 plus X Windows Login
        6        Reboot Change the run level of the system immediately

        telinit newLevelNumber
       
        Each runlevel has an associated list of services that should
        be stopped or started. These services are configured using
        the chkconfig command described below. Change the run level the system will use after reboot

        This is done by editing the file:
       
                /etc/inittab
               
        Inside, you will find an expression that looks like this:
       
                id:3:initdefault::
               
        In the example shown above, "3" is the run level used at boot time.
        If you wanted to have an X-Windows splash screen with a login dialog,
        you would change this number to "5". Configuring runlevels

        For each runlevel, we need to specify which services start and which
        services should shut down. We also need to specify the order in which
        services start or shut down to allow for interdependencies.
       
        A collection of directories and symbolic links are used to perform
        these functions. A directory exists for each run level X:
       
                /etc/rc.d/rcX.d
               
        Each run level directory contains symbolic links. The links all
        point to the service control files found in:
       
                /etc/rc.d/init.d

        The name of the link begins with the letter "S" if the service
        should start. The name of the link begins with "K" if the service
        should be stopped (Killed.)
       
        The link names also determine order of starting or stopping:
        Following the S or K is a two-character integer that determines
        the order of execution relative to the other links in the directory.
        Higher numbers make the service start later.
       
        After the ordering digits, the service name appears. For example,
        the following link will start networking at relative step 10 of
        runlevel 3:
       
                /etc/rc.d/rc3.d/S10network
               
        Networking gets turned off in runlevel 1, so we find this link:
       
                /etc/rc.d/rc1.d/K90network
       
        The Linux boot process uses these links to start or stop the
        appropriate services at boot time or when you explicitly switch
        the run level using the telinit command.

        You can maintain all these links by hand: The important idea is to keep
        them complimentary: If you create start links on levels 2 and 5,
        you should have kill links on 0,1,3,4, and 6.
       
        The chkconfig command is supposed to help you maintain these links.
        It doesn't start or stop a service, it only creates or deletes the
        symbolic links.
       
        The chkconfig command obtains run level and starting order information
        from a special comment found inside each service control file.
        A typical comment in a service control file looks like this:
       
                # chkconfig: 2345 90 60
       
        This was extracted from my /etc/rc.d/init.d/crond control file.
        The comment suggests that the crond service should start on
        runlevels 2345 at relative position 90. By the complimentary
        priciple, it should have kill links on levels 0, 1 and 6 at relative
        position 60.
       
        Install both start and kill links for a newly installed service:

                chkconfig --add serviceName
       
        Remove all start and kill links for a service at all run levels.

                chkconfig --del serviceName

        Some service control files will have a minus character for the list
        of run levels. For example, my Samba control file (smb) contains:
       
                # chkconfig - 91 35
       
        To install a new service like this you first use:
       
                chkconfig --add serviceName
               
        This will put kill links on every level.
       
        Then you specify the levels where you want the service to run:
       
        Add start links and remove kill links from specified levels:
       
                chkconfig --level levelString serviceName on
       
        Add kill links and remove start links from specified levels:
       
                chkconfig --level levelString serviceName off
       
        If you don't use the "--level levelString" option, the default
        levels 2345 will be used.
       
        Example to start Samba at runlevels 345:
       
                chkconfig --level 345 smb on
               
        It often happens that people try to maintain the links
        by hand and get everything messed up. To clean house when you
        are uncertain about a service configuration, first get rid of all
        the links using:
       
                chkconfig --del serviceName

2007-7-20 11:54 admin
Kernel

View the startup messages

        dmesg Slow down the boot process so you can see what happens

        Add 'confirm' (no quotes) to the lilo command line:
        Example, At the lilo promp:
       
        LILO: vmLinuz confirm Display all system version information

        uname -a Display only the kernel version string

        uname -r Specify the root device on a boot floppy

        rdev /dev/fd0 /dev/hda7 Show the root device for an image file

        rdev anImageFile Set the root device for an image file

        rdev anImageFile /dev/hda7 Add a device entry

        mknod /dev/name type major minor
        Where type is p b c or u Make a ramdisk root file system image with support for PCMCIA

        pcinitrd --all myInitrdFile Mount a RAM disk root file system image so you can poke around inside

        mount -t ext2 -o loop myInitrdFile /mnt/initrd
       
        (You have to gunzip compressed images first) Core dump file size

        ulimit -c <size>

        You can disable core dumps by putting "ulimit -c 0" in
        /etc/profile Controlling PCMCIA slots

        cardctl { suspend, resume, status, eject, insert } slot#
        cardinfo                 # X interface for cardctl Copy raw kernel image to floppy device (obscure way)

        dd if=/boot/vmlinuz of=/dev/fd0 bs=8192 DOS command to boot with a commpressed RAM disk root file system

        loadlin vmlinuz initrd=myGZippedFileSystemImage Change a dynamic kernel parameter (example)

        echo anInteger > /proc/sys/kernel/file_max Update module dependancies after editing /etc/modules.conf

        depmod -a Tell lilo you have edited lilo.conf

        lilo Tell the kernel to flush the write-behind cache

        sync Write something in the system log (Great for system script debugging)

        logger -t MyProgram "This is a message"
       
        Also see "man initlog" for debugging init.d scripts. Building a new kernel

        Update /usr/src/linux symbolic link to point at sources.
        Go into /usr/src/linux
        Backup .config to a safe place if you want to keep a copy.
       
                make mrproper (Will delete old .config)
               
                make xconfig (Fill in the blanks and write the .config file)
                OR Copy in an old .config file and do:
                make oldconfig
               
        Edit the Makefile to bump the version number!
       
                make dep clean bzImage install ;
                make modules modules_install
       
        If your root device has a modular driver
        you will need an initial ram disk at boot time.
        For kernel/module version set xx.yy.zz use:

                mkinitrd /boot/initrd-xx.yy.zz xx.yy.zz       

        This will build a ramdisk file system image that contains
        all the loadable modules for block devices described in your
        /etc/conf.modules file. See also pcinitrd for PCMCIA boot
        devices.

        Add another entry for your old kernel to lilo.conf & run lilo.
        Move any modules you don't build (like dpc)
        Some versions of gcc are not compatible with some kernels.
        Redhat supplies a "kgcc" for these systems. Update PCMCIA

        OBSOLETE: This is part of the kernel make process now!
        Preserve the Redhat-modified /etc/pcmcia/network script.
        In the pcmcia-cs source directory:
       
                make clean config
       
        Answer the questions: Symbols from the source tree and
        don't say yes to the plug & play bios question.
       
                make all install
       
        Restore the redhat version of /etc/pcmcia/network Patch a kernel

        Put the patch file in /usr/src (above 'linux') and cd there.
        Then:

        patch -s -p0 < patchfile Test a patch before you apply

        Add the --dry-run option Copy raw kernel image to make a bootable floppy device

        cp zImage /dev/fd0 Cross compiling a kernel

        Build cross versions of binutils and gcc:
        Define the appropriate CROSS_COMPILE prefix and
        use ./config & make as usual.
        Make a separate copy of kernel sources.
        Don't update the /usr/src/linux symbolic link.
        The /usr/src/linux must point to your host kernel source.
        Edit the Linux Makefile in the new kernel sources.
        The CROSS_COMPILE must match the one used for the
        binutils & gcc. Example:

                ARCH := ppc
                CROSS_COMPILE =powerpc-linux-
               
        Proceed as usual. Re-lilo a linux boot partition that is not the running system

        The need for this arrises when you forget to lilo a new kernel.
        Boot from a CD or floppy, mount the target Linux partition. Then:

        chroot linuxPartition lilo

2007-7-20 11:54 admin
Patch

Create a patch file

        oldVersion        # Path to the unmodified files
        newVersion        # Path to the modified files

        diff -rN oldVersion newVersion > patchFile

        -r        Perform diff recursively
        -N        Support creating new files Apply a patch file

        You should be in the directory above oldVersion:

        patch -u -s -p0 < patchFile

        -s        Silent
        -p0        Don't modify file path names in the patch
        -pN        Remove first N components of file path names
        -d p        Switch to the directory named by p

2007-7-20 11:54 admin
RPM

Install or remove a package

        rpm -i package.rpm        # Install a package
        rpm -U package.rpm        # Update an installed package
        rpm -F package.rpm        # Freshen (Update only if installed)
        rpm -e packageName        # Remove a package Queries

        rpm -qip package.rpm        # Describe a non-installed package
        rpm -qlp package.rpm        # List files in a non-installed package
        rpm -qa                        # List all installed packages
        rpm -qf afile                # See which package installed a file
        rpm -qR package                # Find out what a package needs
        rpm -qa | grep <pat>        # See which packages have pat in name List packages by the source Linux distribution

        rpm -qai | grep Dist | awk -F': ' '{print $3}' | sort | uniq -c Build a binary rpm using a source rpm

        rpmbuild --rebuild your.src.rpm
        The result is in /usr/src/redhat/RPMS/i386 Build a new source rpm from an installed source rpm

        rpm -i xxxx.src.rpm
       
        You can now tamper with the tgz in /usr/src/redhat/SOURCES
       
        rpmbuild -bs /usr/src/redhat/SPECS/xxxx.spec
       
        The result is in /usr/src/redhat/SRPMS Create a binary rpm from a tar.gz that contains a .spec

        rpmbuild -tb yourpackage.tar.gz Obtain a set of updates from Redhat

        up2date -u -d
       
        The downloaded files are in /var/spool/up2date Install rpm on an empty linux partition mounted on 'mp'

        rpm --root mp --initdb Create a cpio archive from an rpm and write to an archiveFile

        rpm2cpio rpmFile > archive.cpio Expand a cpio archive

        cpio -mid < archive.cpio Unpack an rpm on one step

        rpm2cpio rpmFile | cpio -mid Use query formats

        The whole format is one "string"
        Each tag specification looks like this: %{NAME}
        You usually want a newline at the end:
               
                rpm -q xmms --qf "%{SIZE}\n"
       
        Between the "%" and the opening brace "{" you can
        specify field sizes, or any other C printf formatting chars.
        Positive integers select right alignment in the field.
        Negative integers select left alignment in the field:
       
                rpm -qa --qf "%-30{NAME} %10{SIZE}\n"
       
        Some header tags select arrays of values.
        Use square brackets to iterate over the set.
        You can specify more than one array tag inside the query:
       
                rpm -q xmms --qf "[%-50{FILENAMES} %10{FILESIZES}\n]"
       
        Normally, all tags inside square brackets must be array tags.
        If you want to print a fixed tag as a label on each line, add
        an "=" char to the fixed-tag name:

                rpm -q xmms -qf "[%{=NAME} %{FILENAMES}\n]"
               
        Display a list of all rpms sorted by size:
       
                rpm -qa --qf "%-50{NAME} %10{SIZE}\n" | sort -nk 2,2
               
        Display a list of all "devel" packages sorted by size:
       
                rpm -qa | grep devel | \
                xargs rpm -q --qf "%-50{NAME} %10{SIZE}\n" | \
                sort -nk 2,2 List all the available header tags for query formats

        rpm --querytags Show the value of a header element

        rpm -q packageName --qf "%{SIZE}\n" List the sizes of selected packages

        rpm -qa | grep devel | xargs rpm -q --qf "%{NAME} %{SIZE}\n" Fix a hoarked rpm database

        Symptom: All rpm commands "hang up"
       
        Find and kill all processes running rpm or up2date:

                ps ax | grep rpm
                ps ax | grep up2date
               
                (Kill them by hand)

        Remove all rpm database lock files:

                rm -f /var/lib/rpm/__db*

        This usually gets things going. If not:
       
        First make a backup of the database:

                cp -r /var/lib/rpm /var/lib/rpm.copy

        Then rebuild the database

                rpm --rebuilddb

        This takes some time, but if it hangs forever, repeat
        the "Find and kill rpm" step and proceed with:
       
                cd /var/lib/rpm
                db_verify Packages

                (You may need to install db4-utils)
       
        If db_verify reports errors, try:

                cp Packages Packages.backup
                db_dump Packages.backup | db_load Packages
                rpm --rebuilddb
               
        If all these steps fail, you are in big do-do. Signature verification errors

        Recent versions of Redhat require signature verification
        when processing packages. If you havn't imported the
        Redhat GPG signature, you will get errors of the form:
       
                warning: ... V3 DSA signature: NOKEY, key ID ...
               
        To fix this, first obtain a copy of the file RPM-GPG-KEY.
        If you are creating your own rpm-based distribution, the
        file is widely available on the web.
       
        On a Redhat system, it can be found using:
       
                find /usr -name RPM-GPG-KEY
       
        When you have the file, execute the following expression:
       
                rpm --import RPM-GPG-KEY

頁: [1] 2 3
查看完整版本: Linux Commands

重要聲明:本論壇是以即時上載留言的方式運作,XD Forum Pro - 專業論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,例如侵害您的版權,請以電郵方式聯絡我們,並寫上貴公司或機構的相關資料(例如商業登記號及版權持有證明)以便我們查實後盡快處理有關問題。XD Forum Pro - 專業論壇有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切管理及法律追究之權利。

Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.