Paul G. Allen wrote:
On Mon, 2007-06-11 at 15:07 -0700, Darren New wrote:
It has a universal component model, leading to a variety of universal
scripting languages.
Linux has many scripting languages available to it that are older than
Windows is.
So does Windows. That wasn't the question.
What universal component model will let me write a script that runs vi
edits over an open-office spreadsheet whose data is automatically pulled
out of a database? :-) What's the common scripting language I can use
to drive open office, emacs, and the Gimp all at once?
IBM (and Amiga) had REXX. Windows has WSH. If there's something like
that on Linux, I'd love to hear what it is.
It has a more powerful file system as well as a
more powerful permissions system.
Maybe in the past, but certainly not today. There's a long list of file
systems for Linux as well as ACL support....
Er, as far as I know, for example, Linux still only has an owner integer
and a group integer on a file. This means that if you have a file on
removable media (like a USB drive), and you plug it into a different
machine, you may suddenly find it has different owners. If there's a way
to have (say) a small home network where this sort of thing works, where
I can move my backup disk from machine to machine, other than simply
making sure all the user names map to the same ID numbers on all the
machines, I'd like to hear how to work it.
It also lacks multiple streams on a file, altho I believe there's a
limited name/value capability, as long as you don't want support from
the rest of the OS (like, say, the copy command, I/O redirection, etc.)
It also lacks, as far as I know, the ability to delete the beginning of
a file, altho that one I'm not sure about. Does it still work to write
all zeros over the beginning of a file to deallocate those blocks? Last
I checked, it only worked if you seek() past an area of the file and
never wrote to it.
I also don't know anything that lets me (for example) query for the list
of files that were deleted or had their permissions changed since the
last time I ran this program without scanning the entire disk drive.
There's no way to tell if a file was renamed, or if the file was simply
deleted and replaced with another file that takes the same i-node.
Indeed, as far as I can see, the interface for detecting files changing
when you *are* running is barely usable for showing explorer-style
windows updating in a GUI.
And, as far as I could tell, there's no convenient way to (for example)
copy files over the network while retaining the ACLs, or back up and
restore files while retaining stuff like the bits that say "Mary is
allowed to append to the file, Joe and Sue are allowed to read but not
write, Frank is allowed to write but not read, and Fred is allowed to
back it up but not allowed to read it."
AFAIK, Linux also doesn't have something like BITS standard. I don't
know how you configure Linux to download something slowly and only when
the network stack isn't handling other traffic, and how to have it do
that only when your connected, and have it launch your program on the
result when it's finished downloading. Sure, you can write it, but it
isn't ubiquitous as something like cron is, and that makes a big
practical difference.
I'm not sure how you configure something in Linux so that it doesn't
slow down other processes with disk access. I.e., I don't know the
equivalent of "nice" for disk access. Can you tell me which FM to R?
Linux also seems to lack an EFS that can encrypt individual files in a
directory, or have different files in a directory encrypted by different
people. This is something I'd really like to have on my laptop, altho
granted it's somewhat less of a problem with Linux, since things tend
not to spray files randomly all over the file system, so mounting your
home directory and /tmp and /usr/tmp and ... as encrypted partitions
probably works fairly well.
It also lacks the ability to clean up temp files when your program
crashes or when you log out. Granted, Windows doesn't either AFAIK, but
I've worked on systems where this sort of thing was standard and it
always bugged me that nobody in the small-computer OS biz ever got that
right.
The features of the file system and
permission system are actually well-integrated into the tools.
This is the "backup" part, see. I haven't found any program that will
back up files with ACLs and the other magic "append only" type bits intact.
>> It has
transactional features built in, so you can say "I need to write these
three files, add those three tags to the middle of that XML file, and
put three records in the SQL database over there, and I don't want
anyone to see any of the changes before they're all committed, and I
want them to all roll back if I dump core in the middle."
....including journaling file systems.
What's the system call that lets me create and fill three files and not
let anyone see the first one in the directory before the third one is
created and closed? What's the call that lets an aborted transaction in
a database delete the three files? What's the call that makes those
three files disappear (and indeed never show up) when my program core
dumps while writing the third file? I'd really like to know, because
I've looked for this functionality and I was unable to find it.
What is Linux lacking again? But now we digress.
I think you're putting your hands over your ears. Just saying
"Journaling file system" doesn't do what I described. If it did, there
wouldn't be any need for programs to write new versions to a .tmp file
and then rename them over top of the old version, just to keep from
corrupting the file if they crashed in the middle.
Pointers to any of these functionalities would be appreciated. The name
of the function, or the option to ioctl, or the name of the package, or
even what Linux calls the equivalent functionality (I'll grant you that
"USN" isn't a particularly obvious acronym) would be helpful. Thanks!
--
Darren New / San Diego, CA, USA (PST)
His kernel fu is strong.
He studied at the Shao Linux Temple.
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg